iOS HexString轉(zhuǎn)換為NSData

即 與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)換

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容