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



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

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
}

在打印并对byte变量进行算术运算后,我注意到byte是一个十进制数。例如,对于字符b的ASCII值(0x98)byte98存储为十进制,在对其进行逐位操作时会导致值不正确。我如何将此十进制值转换为正确的十六进制、二进制或十进制表示?(对于0x98,我希望获得152的十进制值(

注意到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);

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

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