如何将字节转换为正确的十进制表示形式?
How to convert a byte to the correct decimal representation?
我有一个函数可以检查字符串特定索引中的位(转换为字节表示):
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
是一个十进制数。比如char的ASCII值b
(0x98)
,byte
将98
存储为十进制,在进行位运算时会得到不正确的值,如何才能我将此十进制值转换为正确的十六进制、二进制或十进制表示形式?(对于 0x98
我希望获得 152
的十进制值)
noticed that byte
is a decimal number
整数没有内在基数,它只是内存中的一种位模式。你可以将它们写成十进制、二进制、八进制等形式的字符串,但内存中的值是相同的。
换句话说,整数不会作为字符串存储在内存中。
For example, for ascii value of char b (0x98), byte simply stores 98 as decimal
ASCII b
不是0x98,是98,也就是0x62:
assert_eq!(98, 0x62);
assert_eq!(98, "b".as_bytes()[0]);
assert_eq!(98, 'b' as i32);
How can I convert this decimal value to correct hex, binary or decimal representation?
这样的转换没有意义,因为如上所述,整数不会存储为字符串。
我有一个函数可以检查字符串特定索引中的位(转换为字节表示):
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
是一个十进制数。比如char的ASCII值b
(0x98)
,byte
将98
存储为十进制,在进行位运算时会得到不正确的值,如何才能我将此十进制值转换为正确的十六进制、二进制或十进制表示形式?(对于 0x98
我希望获得 152
的十进制值)
noticed that
byte
is a decimal number
整数没有内在基数,它只是内存中的一种位模式。你可以将它们写成十进制、二进制、八进制等形式的字符串,但内存中的值是相同的。
换句话说,整数不会作为字符串存储在内存中。
For example, for ascii value of char b (0x98), byte simply stores 98 as decimal
ASCII b
不是0x98,是98,也就是0x62:
assert_eq!(98, 0x62);
assert_eq!(98, "b".as_bytes()[0]);
assert_eq!(98, 'b' as i32);
How can I convert this decimal value to correct hex, binary or decimal representation?
这样的转换没有意义,因为如上所述,整数不会存储为字符串。