即 與NSData的description方法的相反
- (NSData *)dataWithHexString:(NSString *)hexString {
NSString *newStr = [hexString stringByReplacingOccurrencesOfString:@" " withString:@""];?? //去掉空格
NSString *replaceString = [newStr substringWithRange:NSMakeRange(1, newStr.length-2)];?? //去掉<>符號
const char *hexChar = [replaceString UTF8String];? //轉(zhuǎn)換為 char 字符串
Byte *bt = malloc(sizeof(Byte)*(replaceString.length/2));?? // 開辟空間 用來存放? 轉(zhuǎn)換后的byte
char tmpChar[3] = {'\0','\0','\0'};
int btIndex = 0;
for (int i=0; i<replaceString.length; i += 2) {
tmpChar[0] = hexChar[i];
tmpChar[1] = hexChar[i+1];?
bt[btIndex] = strtoul(tmpChar, NULL, 16);?? // 將 hexstring 轉(zhuǎn)換為 byte 的c方法?? 16 為16進制??
btIndex ++;
}
NSData *data = [NSData dataWithBytes:bt length:btIndex]; //創(chuàng)建 nsdata 對象
free(bt);? //釋放空間
return data;
}
這里核心轉(zhuǎn)換代碼用到了 c String庫里的 unsigned long strtoul(const char *, char **, int);?
完成轉(zhuǎn)換