异常的CString格式
Unusual CString formatting
我的代码是:
int value = 65536;
CString output = TEXT("");
output.Format(TEXT("%X"), value);
打印output
得到:10000
我需要这样的输出:0001.0000
有可能吗?
我似乎找到了答案:
output.Format(TEXT("%.4X.%.4X"), (value >> 16) & 0xffff, value & 0xffff);
你必须保留你不想要的字节,并留下所有其他的。
假设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
- 字节1-2:使用0x0000FFFF或0xFFFF简单地屏蔽所有其他位
- Byte 3-4:向左移动16个字节的字节1-2。这不是你的情况,但要确保只打印这些字节的值,掩盖所有其他位。
你的代码可以是:
output.Format(TEXT("%04X.%04X"), (value >> 16) & 0xFFFF, (value & 0xFFFF));
打印输出给我:10000
"%X"格式字符串正常工作。
我需要这样的输出:0001.0000
如果我可以问,使用浮点十进制表示的意义是什么?使用十六进制是因为它可以直接转换为二进制,否则使用它就没有意义了。
但是无论如何,如果你真的需要它,CString::format()的格式化字符串与printf()的:
相同%A十六进制浮点数,大写
所以将%F替换为%A,并将变量转换为浮点数,这样就可以了!
相关文章:
- 如何在openssl-ecc中获取十六进制格式的私钥
- 将"打开的CV图像"中的"颜色"转换为整数格式
- TDateTime格式在C++Builder中不会更改
- 如何防止clang格式在流运算符调用之间添加换行符<<
- 检查不带转换的扫描格式
- 在C++中使用Cstring反转字符串
- 当我尝试使用 sstream 和分面将 Boost Time_duration转换为字符串时,我没有得到所需的格式
- 是否可以从格式字符串中检索"width"
- clang格式:宏的缩进
- clang格式:禁用排序包含
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 将RGB图像保存为PPM格式
- 询问在设计我的手臂模拟器功能表示格式1
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 带有Protobuf序列化的C++Hazelcast:字符串不是UTF-8格式的
- 如何将strftime中的格式错误作为异常捕获
- 将CHW格式的浮点向量转换为cv::Mat
- 如何将二进制格式的 C++ 对象的 std::vector 保存到磁盘?
- 将UTC时间转换为CString格式
- 异常的CString格式