hed*_*017 2 arrays iteration byte unsafe rust
我尝试了这样一段代码来遍历一个字节u64:
let mut message: u64 = 0x1234123412341234;
let msg = &message as *mut u8;
for b in 0..8 {
// ...some work...
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,Rust不允许这种类似C的索引.
虽然transmute-ing是可能的(参见@Tim 的答案),但最好使用byteorder crate来保证字节顺序:
extern crate byteorder;
use byteorder::ByteOrder;
fn main() {
let message = 0x1234123412341234u64;
let mut buf = [0; 8];
byteorder::LittleEndian::write_u64(&mut buf, message);
for b in &buf {
// 34, 12, 34, 12, 34, 12, 34, 12,
print!("{:X}, ", b);
}
println!("");
byteorder::BigEndian::write_u64(&mut buf, message);
for b in &buf {
// 12, 34, 12, 34, 12, 34, 12, 34,
print!("{:X}, ", b);
}
}
Run Code Online (Sandbox Code Playgroud)
(游乐场的固定链接)
| 归档时间: |
|
| 查看次数: |
179 次 |
| 最近记录: |