如何将字节转换为正确的十进制表示?

Ach*_*113 -1 ascii bit rust

我有一个函数可以检查字符串的特定索引中的位(转换为字节表示):

fn check_bit(s: String) -> bool {
    let bytes = s.as_bytes(); // converts string to bytes
    let byte = s[0]; // pick first byte
    // byte here seems to be in decimal representation
    byte | 0xf7 == 0xff // therefore this returns incorrect value
}
Run Code Online (Sandbox Code Playgroud)

在对byte变量进行打印和算术运算后,我注意到这byte是一个十进制数。例如,对于 char b(的 ASCII 值0x98)byte 存储98为十进制,这会导致对它们进行按位运算时的值不正确。如何将此十进制值转换为正确的十六进制、二进制或十进制表示?(因为0x98我期望得到的十进制值152

Aco*_*orn 5

注意到这byte是一个十进制数

整数没有内在基数,它只是内存中的位模式。您可以将它们以十进制、二进制、八进制等形式写在字符串中,但内存中的值是相同的。

换句话说,整数不作为字符串存储在内存中。

例如,对于 char b (0x98) 的 ascii 值,byte 只是将 98 存储为十进制

ASCIIb不是 0x98,它是 98,也就是 0x62:

assert_eq!(98, 0x62);
assert_eq!(98, "b".as_bytes()[0]);
assert_eq!(98, 'b' as i32);
Run Code Online (Sandbox Code Playgroud)

如何将此十进制值转换为正确的十六进制、二进制或十进制表示?

这种转换没有意义,因为整数不像上面解释的那样存储为字符串。