首页 > 解决方案 > 如何将 HEXString (NSString) 转换为 ByteArray Objective-C

问题描述

我有一个字符串,我正在尝试将其分解并将其添加到 NSArray。我最近从 Java (android) 迁移到 iOS...我编写了一个 java 函数,它将一个 hexString/string 转换为一个字节数组。我看不到使用objective-c的明显方法。不确定我所尝试的是否接近于实现我所需要的。

这是我的字符串

 NSString *code = @"11111bfb";

这是我希望达到的输出

 NSArray *codeArray = @[@0x11, @0x11, @0x1b, @0xfb];

方法

- (NSData *)dataFromHexString:(NSString *) string {
    if([string length] % 2 == 1){
        string = [@"0x"stringByAppendingString:string];
    }

const char *chars = [string UTF8String];
int i = 0, len = (int)[string length];

NSMutableData *data = [NSMutableData dataWithCapacity:len / 2];
char byteChars[4] = {'\0','\0','\0','\0'};
unsigned long wholeByte;

while (i < len) {
    byteChars[0] = chars[i++];
    byteChars[1] = chars[i++];
    wholeByte = strtoul(byteChars, NULL, 16);
    [data appendBytes:&wholeByte length:1];
}
return data;

}

标签: objective-c

解决方案


所以这似乎返回了我需要的格式。

NSString * inputStr = @"11111bfb";


    NSMutableArray *charByteArray = [[NSMutableArray alloc]initWithCapacity:1];
    int i = 0;
    for (i = 0; i+2 <= inputStr.length; i+=2) {

        NSRange range = NSMakeRange(i, 2);
        NSString* charStr = [inputStr substringWithRange:range];
        [charByteArray addObject:[NSString stringWithFormat:@"0x%@",charStr]];

    }

推荐阅读