gpt4 book ai didi

rust - 将u16(或u32,u64)的数组(或向量)转换为u8的数组

转载 作者:行者123 更新时间:2023-12-03 11:43:44 25 4
gpt4 key购买 nike

我对使用位移和强制转换的u16 to u8做到这一点没有问题,但是如何使用u16数组来做到这一点呢?甚至理想情况下,我还是希望直接从vec转换为[u8]。最优雅的方式是什么?

&my_vector[..] // my vector converted to [u16] but I need [u8]

最佳答案

借助@ Aplet123洞察力,使其能够正常工作:
从向量到字节数组
从Vec到[u8]

let mut my_u16_vec : Vec<u16> = Vec::new();
let my_u8_array = my_u16_vec.align_to::<u8>().1;

从字节数组返回到Vector
从[u8]到Vec
let n = my_u16_vec.len() * 2;
let my_u16_vec_bis:Vec<u16> = (my_u8_array[..n].align_to::<u16>().1).to_vec();

正确设置字节
然后,由于字节顺序的缘故,将字节反向写入内存中:
for e in my_u16_vec_bis:Vec.iter() {
let value = e >> 8 | (e & 0xff) << 8;
}

关于rust - 将u16(或u32,u64)的数组(或向量)转换为u8的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66631010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com