作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不知道如何转换 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/
我是一名优秀的程序员,十分优秀!