【问题标题】:How to convert HEXString (NSString) to ByteArray Objective-C [duplicate]如何将 HEXString(NSString)转换为 ByteArray Objective-C [重复]
【发布时间】:2019-12-17 07:02:14
【问题描述】:

我有一个字符串,我正在尝试将其分解并将其添加到 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


    【解决方案1】:

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

    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]];
    
        }
    

    【讨论】:

      猜你喜欢
      • 2014-10-25
      • 2013-03-31
      • 2012-10-06
      • 2011-12-04
      • 2020-10-27
      • 2018-04-27
      • 2018-04-06
      • 2011-09-19
      • 1970-01-01
      相关资源
      最近更新 更多