我执行如下代码:
CString sTmp;
sTmp.Format("%02X",0xff);
之后 sTmp的值为“FF”
但是我在执行如下代码后
CString sTmp;char a = 0xff;
sTmp.Format("%02X",a);
之后 sTmp的值为“FFFFFFFF”而且我用c库里面的sprintf来格式化也是同样的效果,请达人指教怎么会出现这种情况呢?
CString sTmp;
sTmp.Format("%02X",0xff);
之后 sTmp的值为“FF”
但是我在执行如下代码后
CString sTmp;char a = 0xff;
sTmp.Format("%02X",a);
之后 sTmp的值为“FFFFFFFF”而且我用c库里面的sprintf来格式化也是同样的效果,请达人指教怎么会出现这种情况呢?
a实际是-1
%X 表示 Unsigned hexadecimal integer所以,a 应该定义为 unsigned integer
char最大就是01111111
而11111111在八位中表示-1
-1在unsigned integer就摇身一变成了0xFFFFFFFF
所以你看到的是这样
不知道我说的对不对
unsigned integer: 0xffffffff
char: -1