c++ - 有符号字节和奇偶校验字节的区别

标签 c++ byte

我正在从字节流中读取一些字节,它们看起来像这样:

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/

相关文章:

java - 如何存储iv、salt和密文?

c++ - 为什么我的程序在我向数组输入一定数量的字母后就结束了?

java - 从套接字 inputStream read() 返回的 Int 中获取字节

java - 我的 int 的字节数

c++ - google mock - 如何在变量名即标识符上进行 EXPECT_CALL

java字节操作疑问

Android 下载文件内存不足

c++ - Q3DSurface : Semi-transparent QSurface3DSeries

c++ - 初级 5 版。来自自定义删除函数的 unique_ptr 构造函数

c++ - 从 int64 和 uint64 C++ 转换时的精度损失?