如何使 NSData 上的十六进制必须为 2 位

发布于 2024-11-08 04:59:30 字数 602 浏览 0 评论 0原文


我尝试在 iPhone 上使用加密 aes 并成功,但我想要的 nsdata 结果必须是 2 位十六进制,我尝试打印此代码的密码结果:

unsigned char ciphertext[16];
....
...
...
...
for (int i=0; i<sizeof(ciphertext); i++) {
    NSLog(@"ciphertext[%d] : %x ",i,ciphertext[i]);

}

结果是:

ciphertext[0] : 43
密文[1]:d4
密文[2]:a5
密文[3]:ee
密文[4]:24
密文[5]:a5
密文[6]:31
密文[7]:62
密文[8]:1c
密文[9]:99
密文[10]:88
密文[11]:29
密文[12]:d6
密文[13]:97
ciphertext[14] : 7 <== 这是问题,如何使其成为 07 ?
ciphertext[15] : 44

请帮我将这个六进制转换为 2 位数字? 问候,

I try use encrypt aes on iphone and success, but the result i want on nsdata must be 2 digit hexa, i try to print the result of cipher whit this code :

unsigned char ciphertext[16];
....
...
...
...
for (int i=0; i<sizeof(ciphertext); i++) {
    NSLog(@"ciphertext[%d] : %x ",i,ciphertext[i]);

}

The result is :

ciphertext[0] : 43
ciphertext[1] : d4
ciphertext[2] : a5
ciphertext[3] : ee
ciphertext[4] : 24
ciphertext[5] : a5
ciphertext[6] : 31
ciphertext[7] : 62
ciphertext[8] : 1c
ciphertext[9] : 99
ciphertext[10] : 88
ciphertext[11] : 29
ciphertext[12] : d6
ciphertext[13] : 97
ciphertext[14] : 7 <== this is problem, how make this to be 07 ?
ciphertext[15] : 44

Please help me to make this hexa to 2 digit ?
Regards,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏至、离别 2024-11-15 04:59:30

您可以使用:

NSLog(@"ciphertext[%d] : %02x ",i,ciphertext[i]);

有关更多选项,请参阅 IEEE printf 规范,即由 字符串格式说明符 文档。

要将您的 char[] 存储到 NSData,您可以执行以下操作:

NSData *data = [NSData dataWithBytes:ciphertext length:16];

You can use:

NSLog(@"ciphertext[%d] : %02x ",i,ciphertext[i]);

See the IEEE printf specification for further options, that is referenced by the String Format Specifiers doc.

To store your char[] to a NSData, you could do:

NSData *data = [NSData dataWithBytes:ciphertext length:16];
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文