gpt4 book ai didi

rust - 如何将大 Vec 切片为 &[u8]?

转载 作者:行者123 更新时间:2023-11-29 07:51:56 28 4
gpt4 key购买 nike

我不知道如何转换 Vec<i32>进入 &[u8]切片。

fn main() {
let v: Vec<i32> = vec![1; 100_000_000];
let v_bytes: &[u8] = /* ... */;
}

我要写大Vec<i32>保存到一个文件中,以便我以后可以读回。

最佳答案

您可以使用 std::slice::from_raw_parts :

let v_bytes: &[u8] = unsafe {
std::slice::from_raw_parts(
v.as_ptr() as *const u8,
v.len() * std::mem::size_of::<i32>(),
)
};

按照这个答案的评论,你应该把这段代码包装在一个函数中,并让返回值借用输入,这样你就可以尽可能地使用借用检查器:

fn as_u8_slice(v: &[i32]) -> &[u8] {
unsafe {
std::slice::from_raw_parts(
v.as_ptr() as *const u8,
v.len() * std::mem::size_of::<i32>(),
)
}
}

关于rust - 如何将大 Vec<i32> 切片为 &[u8]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29037033/

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