將十六進制字符串轉換成字節數組

NSString *str = @"AA21f0c1762a3abc299c013abe7dbcc50001DD"

將里面的字符轉換到Byte數組中,如下

Byte buffer[] = { 0xAA, 0x21, 0xf0, 0xc1, 0x76, 0x2a, 0x3a, ... , 0x01, 0xDD }

@interface NSString (NSStringHexToBytes)

-(NSData*) hexToBytes ;

@end

@implementation NSString (NSStringHexToBytes)

-(NSData*) hexToBytes {

NSMutableData* data = [NSMutableDatadata];

int idx;

for (idx = 0; idx+2 <= self.length; idx+=2) {

NSRange range = NSMakeRange(idx, 2);

NSString* hexStr = [selfsubstringWithRange:range];

NSScanner* scanner = [NSScannerscannerWithString:hexStr];

unsignedint intValue;

[scanner scanHexInt:&intValue];

[data appendBytes:&intValue length:1];

}

return data;

}

@end

應用:

NSData *data = [str hexToBytes];

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 最近在做項目的時候遇到這樣一個需求,需要將十六進制的字符串轉換成字節數組,通過Socket連接,調用硬件接口控制燈...
    寒橋閱讀 2,114評論 1 7
  • 最近在忙一個藍牙項目,在處理藍牙數據的時候,經常遇到進制之間的轉換,藍牙處理的是16進制(NSData),而我們習...
    代碼移動工程師閱讀 1,527評論 0 1
  • 在處理藍牙數據的時候,經常遇到進制之間的轉換,藍牙處理的是16進制(NSData),而我們習慣的計數方式是10進制...
    磚家就是我閱讀 355評論 0 0
  • 嘟噥嘟噥:最近接到一個任務:在客戶端動態生成RSA密鑰對,然后向服務器發送這個密鑰對中的公鑰字符串,由服務器進行公...
    TimmyR閱讀 8,098評論 19 21
  • 蘋果回復被拒理由只有一項,App圖標中出現了Swift,Swift是蘋果的注冊商標,不允許出現在圖標上。問題來了,...
    XYiP閱讀 5,501評論 1 3