Binary 有没有更好的方法来读写8位的Rust?

Binary 有没有更好的方法来读写8位的Rust?,binary,rust,Binary,Rust,我正在写一个boolfuck解释器,我需要将一些东西转换成8位 如果我使用Vec来存储0110001(它应该是0b01100001u8作为char==“a”),我如何将其转换为char 如果我输入Vec(例如:b“hello.”to_Vec()),我如何将其转换为8位 有更好的方法吗?以下是我的解决方案: true表示1,false表示0 u8至Vec: 将字符串转换为位的更好解决方案: b"a".to_vec().into_iter().flat_map(|b| (0u8..8).map(mo

我正在写一个boolfuck解释器,我需要将一些东西转换成8位

如果我使用
Vec
来存储
0110001
(它应该是
0b01100001u8作为char==“a”
),我如何将其转换为
char

如果我输入
Vec
(例如:
b“hello.”to_Vec()
),我如何将其转换为8位

有更好的方法吗?

以下是我的解决方案:

true
表示
1
false
表示
0

u8
Vec

将字符串转换为位的更好解决方案:

b"a".to_vec().into_iter().flat_map(|b| (0u8..8).map(move |i| (b >> i) & 1)).collect::<Vec<u8>>()
b“a”.to_vec().into_iter().flat_map(|b |(0u8..8).map(move | i |(b>>i)&1)).collect:()

这并不完全是你想要的,但离你更近了:你甚至都不清楚自己在问什么。一个
u8
是8位的-这就是“8”的意思!Boolfuck解释器只能逐个输入或输出
0101
,我不能给它
97u8
。我必须把它转换成那种格式。变量在Boolfuck中只接受一位。对不起我的表情@ShepmasterSo是否要在二进制数字的字符串表示形式与其数值之间进行转换?或者什么?
如果c=='1'{true},那么{false}
c=='1'
完全相同。表情@克洛坦,谢谢!
let mut chunks = output_stream.chunks(8);
let mut output = Vec::new();

while let Some(chunk) = chunks.next() {
    let mut chunk = chunk.to_vec();
    let mut char = 0b00000000u8;

    while chunk.len() != 8 { chunk.push(false); }

    for (carry_bit, flag) in chunk.iter().enumerate() {
        if *flag { char += 0b00000001u8 << carry_bit }
    }

    output.push(char);
}
b"a".to_vec().into_iter().flat_map(|b| (0u8..8).map(move |i| (b >> i) & 1)).collect::<Vec<u8>>()