我正在从字节流中读取一些字节,它们看起来像这样:
OUTPUT:
48 -84 -79 -84 -73 -79 46 48 -84
SHOULD BE:
48 44 49 44 55 49 46 48 44
我想把它们变成 ascii 字符,但那些负号让我很困惑。这让我觉得我不明白带符号的字节。我到底做错了什么?
最佳答案
看起来最高位用作奇偶校验位,而您的代码假定它是符号位。
- 48 = 011 0000:设置 2 位 -> 添加 0 -> 0011 0000 = 48
- 44 = 010 1100 : 设置 3 位 -> 加 1 -> 1010 1100 = -84
- 49 = 011 0001 : 设置 3 位 -> 加 1 -> 1011 0001 = -79
- 等等...
解决方案:使用(value & 0x7f)
屏蔽掉最高位。
关于c++ - 有符号字节和奇偶校验字节的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4102150/