Objective-C 十进制转十六进制转换

5

有没有代码片段或类可以将长整型转换为16字节的十六进制字符串?

我想把这样的数据转成如下格式:

long long decimalRepresentation = 1719886131591410351;

将其转换为这样的形式。
//Base 16 Hex Output: 17DE435307A07300
The %x 运算符对我不起作用。
NSLog(@"Hex: %x",decimalRepresentation);
//console : "Hex: 7a072af"

你可以看到,这离正确还有很大的差距。非常感谢您的帮助!

1个回答

10

%x 以十六进制形式打印一个无符号整数,而且 sizeof(long long) != sizeof(unsigned)。例如,参见64位过渡指南中的"数据类型大小和对齐方式"

使用ll说明符(即两个小写L)可以得到所需的输出:

NSLog(@"%llx", myLongLong); 

谢谢,你很快!我还没有在iPhone上尝试过这个,你知道它是否适用于iPhone处理器吗? - Daddy
printf() 格式已经很好地规定了,所以我不会在那里期望任何意外。 - Georg Fritzsche
你应该在回答中明确指出,%llx实际上是两个小写的L,而不是两个数字1。我不得不复制粘贴你的回答才意识到这一点。 - Daddy
@Justin:哦,好的,我想对我来说,“long -> 小写 L”现在是硬连线的了。 - Georg Fritzsche

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接