【问题标题】:How to compare char with 0x85 correctly?如何正确比较 char 和 0x85?
【发布时间】:2015-03-26 15:00:20
【问题描述】:

我在 C++ 中编程。 我有来自winsock recv的缓冲区的char *输出。像这样比较我有一点问题。我有一个字符。

if(a == 0x85)

没用,但是

if(a == -123)

同样的(来自调试器)工作.. 对不起我的英语。

【问题讨论】:

  • 不要使用char。使用unsigned charuint8_t,因为第8 位可能是数据位,但有符号数将其视为符号位。

标签: c++ char hex byte


【解决方案1】:

试试

if ( a == (char)0x85 )

您的代码不起作用,因为a 将转换为int,因为在== 的右侧有一个int 类型的表达式。如果a 确实是(char)0x85,而charsigned char(可能并非在所有平台上都是这样),那么a 是负数,因此(int)a 是负数,因此不等于@987654332 @。

将右侧变成char 类型的表达式,您将度过愉快的一天! ;)

【讨论】:

  • 我在想它是否与有符号/无符号字符有关。但它现在可以工作了!非常感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-28
  • 1970-01-01
  • 1970-01-01
  • 2012-10-16
  • 1970-01-01
  • 2013-06-24
相关资源
最近更新 更多