内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用
Object-C中是否有将十六进制字符串转换为字节的方法?例如@"1156FFCD3430AA22"
转到unsigned char array {0x11, 0x56, 0xFF, ...}
...
- (NSData *)dataFromHexString { const char *chars = [self UTF8String]; int i = 0, len = self.length; NSMutableData *data = [NSMutableData dataWithCapacity:len / 2]; char byteChars[3] = {'\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; }
它比Wook的解决方案快8倍。NSScaner非常慢。