如何将有符号字符初始化为无符号值,如c++中的0xFF
How to initialize a signed char to unsigned values like 0xFF in C++?
在某些情况下,字节数组在库中使用char类型实现,对于许多编译器来说,char类型是有符号类型。
是否有一个简单的,可读的和正确的方式来初始化一个有符号字符的十六进制值大于127,不大于255?
目前我得到了以下内容,我一直在想一定有更简单的东西:
const unsigned char ff_unsigned = 0xff;
const char ff_signed = static_cast<const char>(ff_unsigned);
我想要一个没有警告的解决方案,即使使用比默认值更高的编译器警告级别。
下面的解决方案,例如创建C4310: cast截断常量值与MSVC 2013:
const char ff_signed = char(0xff);
有。使用以x
为前缀的单引号字符。表示十六进制文字char
类型。
例如:'xff'
.
但请注意,char
可以有符号或无符号,直到c++ 11,它甚至可以是1的补符号类型
const char ff_unsigned = 'xff';
0xff是整型,'xff'是字符。你可以使用
const char ff_signed = (char)0xff;
或
const char ff_signed = 'xff';
相关文章:
- 在 c++ 上,您通常使用什么 int 值、'255' 和十六进制值'0xff'?
- 为什么在将窄字符串转换为宽字符串时用0xFF屏蔽字符?
- COM 端口C++读取0xFF
- 为什么0xff等于负 0 C++
- 为什么将0xff移位 24 位会导致值不正确?
- 这是我的代码,它正在返回Process返回的255(0xff)码块
- QSerialPort::write() - 只有有符号值?(最多 127 个十进制)?我需要发送0xFF(12月255
- (无符号字符)str 与 str + 0xff 或(无符号整数)值与值 + 0xffff 中的哪一种更快和首选
- Windows x64 的近绝对调用 (0xFF 0x15) 寻址
- SDL 代码中0xFF的含义
- program.exe:Native' 已退出,代码为 255 (0xff)
- 为什么 (int)'\xff' != 0xff 但 (int)'\x7f' == 0x7f?
- 为什么(a % 256)与(a & 0xFF)不同?
- 可视C++标头 #define 函数 (x) ('ABC\0' |('0'+(x &0xFF)))
- 我如何读取0xFF文件与libc++ istream_iterator
- 如何将有符号字符初始化为无符号值,如c++中的0xFF
- 进程返回 255 <0xFF>,C++,程序停止工作