Objective-C 十进制到 Base 16 十六进制转换

Posted

技术标签:

【中文标题】Objective-C 十进制到 Base 16 十六进制转换【英文标题】:Objective-C Decimal to Base 16 Hex conversion 【发布时间】:2011-02-19 21:59:18 【问题描述】:

有没有人有一个代码 sn-p 或一个需要很长时间并将其转换为 16 字节十六进制字符串的类?

我希望像这样转换数据

long long decimalRepresentation = 1719886131591410351;

把它变成这个

//Base 16 Hex Output: 17DE435307A07300

%x 运算符不想为我工作

NSLog(@"Hex: %x",decimalRepresentation);
//console : "Hex: 7a072af"

如您所见,这还不算接近。任何帮助都非常感谢!

【问题讨论】:

【参考方案1】:

%x 以十六进制表示和sizeof(long long) != sizeof(unsigned) 打印一个无符号整数。参见例如"Data Type Size and Alignment" 在 64 位转换指南中。

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

NSLog(@"%llx", myLongLong); 

【讨论】:

谢谢,这很快!我还没有在 iPhone 上尝试过,不知道它是否适用于 iPhone 处理器? printf() 格式指定得很清楚,所以我不希望那里有任何惊喜。 您应该在回答中澄清 %llx 实际上是两个小写的 L,而不是两个数字。我必须复制并粘贴您的答案才能实现这一点。 @Justin:哦,好吧 - 我猜对我来说 "long -> 小写 L" 现在是硬连线的。

以上是关于Objective-C 十进制到 Base 16 十六进制转换的主要内容,如果未能解决你的问题,请参考以下文章

c语言如何实现16进制字符串转换为 base64

关于base系列的加密解密

C语言如何把11位16进制字符串转成16进制数?

js实现16进制转换为Base64

C语言如何把11位16进制字符串转成16进制数?

Presto 无法读取十六进制字符串:不是有效的 base-16 数字