我正在针对 iOS 的 Objective C 中进行一些图像转换,并且在将总图像大小保存在字节数组中时遇到了一些困难。
我做了一些搜索,stackoverflow 有很多关于从十进制转换为十六进制的问题,但它们都解释了如何使用%x
printf(或 NSLog)打印十六进制值,这不是我想要的。
我有一个大小为 2500 的图像
int totalSize = 2500;
我想将此大小添加到图像标题中的特定索引
UInt8 headerData[HEADER_SIZE];
memset(headerData, 0, HEADER_SIZE);
//2500 dec = 9C4 hex
headerData[2] = 0xC4;
headerData[3] = 0x09;
headerData[4] = 0x00;
headerData[5] = 0x00; //image size total 4 bytes
我找到了这个线程并尝试了它
char hexval[5];
memset(hexval, 0, 5);
if (totalSize <= 0xFFFF){
sprintf(&hexval[0], "%0x", totalSize);
}
printf("%x %x %x %x", hexval[0], hexval[1], hexval[2], hexval[3]);
它打印了
36 36 33 32
这不是正确的值,还是我在这里遗漏了一些明显的东西?
编辑:对不起,忘了放字节序部分。我想以小字节序格式保存。
注意:我还添加了一个 C 标记,因为 C 解决方案也适用于此。