之前使用的CString::Format都是对32位的整数进行格式化,今天代码中需要将一个64位的整数格式化成16进制,找了好一会儿才找到方法,这里分享一下。
Format格式化64位16进制
UINT64 m_u64MaxAddress=0x000000000055E720;//随便一个64位的整数
CString szTemp;
//其中016表示格式化后长度为16个字符。不足的部分使用0填充
//I64表示64位,X表示16进制大写
szTemp.Format(_T("%016I64X"),m_u64MaxAddress);
格式化后显示的效果如图所示。
Format格式化64位数据注意的问题
Format在格式化数据的时候要注意格式应当与数据一一对应,今天我就遇到了一个错误,如下所示。
CString szTemp;
//其中u64A是一个64位的数,u32B是一个32位的数
szTemp.Format(_T("0x%08X,0x%08X"),u64A,u32B);
然后由于第一个u64A与前面的格式不一致,u64A值格式化了低32位,而高位被残留,导致了后面的U32B在格式化的时候,直接使用的是前面残留的数据,因此在一次格式化中应当注意数据的格式与数据尺寸对应的关系。
当然如果不在一次Format中格式化多个数据是不会出现这种问题的。
扫码领个红包作为打赏吧~~
(余额宝支付时可抵现)
赏
喜欢 (2)or分享 (0)