gpt4 book ai didi

objective-c - 十六进制 NSString 到 char[]

转载 作者:可可西里 更新时间:2023-11-01 06:23:49 25 4
gpt4 key购买 nike

我有一个十六进制的 NSString,我希望能够将它打包到一个字符数组中。

例如,我有一个 NSString:

NSString* hex = "AABBCCDD";

我希望能够将其转换为字符数组以便与 CCCrypt 一起使用:

char bytes[] = { 0xAA, 0xBB, 0xCC, 0xDD };

我该怎么做?

最佳答案

您可以使用 for 循环遍历每两个字节的十六进制字符。然后,使用 NSScanner 将其读入字符数组的 char 变量中。

NSString * hexString = @"AABBCCDD";
char * myBuffer = (char *)malloc((int)[hexString length] / 2 + 1);
bzero(myBuffer, [hexString length] / 2 + 1);
for (int i = 0; i < [hexString length] - 1; i += 2) {
unsigned int anInt;
NSString * hexCharStr = [hexString substringWithRange:NSMakeRange(i, 2)];
NSScanner * scanner = [[[NSScanner alloc] initWithString:hexCharStr] autorelease];
[scanner scanHexInt:&anInt];
myBuffer[i / 2] = (char)anInt;
}
...
// use myBuffer here
...
printf("%s\n", myBuffer);
free(myBuffer);

请注意,这仅在 hexString 的长度为偶数(即可被二整除)时有效。

关于objective-c - 十六进制 NSString 到 char[],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6969389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com