我需要给NSData写一个十六进制字符串,但是我得到一个额外的零附加到结尾,这引起了一些问题。有没有办法将半个字节写入NSData?
例如我正在转换100010002并且我得到100010002 0 (额外零)。
这是我用来将十六进制字符串转换为NSData的方法。感谢。
+ (NSData *)dataFromHexString:(NSString*)stringToConvert {
const char *chars = [stringToConvert UTF8String];
int i = 0;
int len = (int)[stringToConvert 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;
}