我有这样的代码:
int value = 65536;
CString output = TEXT("");
output.Format(TEXT("%X"), value);
打印output
给了我:10000
我需要这样的输出:0001.0000
有可能吗?
答案 0 :(得分:0)
在我看来,我找到了答案:
output.Format(TEXT("%.4X.%.4X"), (value >> 16) & 0xffff, value & 0xffff);
答案 1 :(得分:0)
你必须使用你不想要的字节,并留下所有其他字符。
假设你的平台上的int是32位,你有:
Byte 4 3 2 1
Binary | 0000 0000 | 0000 0000 | 0000 0001 | 0000 0000 |
Hex 0x00 0x01 0x00 0x00
你想要的是隔离字节1-2和字节3-4
您的代码可以是:
output.Format(TEXT("%04X.%04X"), (value >> 16) & 0xFFFF, (value & 0xFFFF));
答案 2 :(得分:-1)
打印输出给我:10000
"%X"格式字符串的工作方式与预期一致。
我需要这样的输出:0001.0000
如果我可能会问,使用浮点十进制表示的重点是什么?使用十六进制是因为它直接转换为二进制,否则没有必要使用它。
但无论如何,如果你真的需要它,CString::format()的格式化字符串与printf()的相同:
%十六进制浮点,大写
所以用%A替换%F并将你的变量转换为浮点数就可以了!#/ p>