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

最近在做項目的時候遇到這樣一個需求,需要將十六進制的字符串轉換成字節數組,通過Socket連接,調用硬件接口控制燈光的開關以及其他硬件的需求。

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];

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

推薦閱讀更多精彩內容

  • NSString *str = @"AA21f0c1762a3abc299c013abe7dbcc50001DD"...
    iOS祎閱讀 317評論 0 0
  • 最近在忙一個藍牙項目,在處理藍牙數據的時候,經常遇到進制之間的轉換,藍牙處理的是16進制(NSData),而我們習...
    代碼移動工程師閱讀 1,527評論 0 1
  • /**ios常見的幾種加密方法: 普通的加密方法是講密碼進行加密后保存到用戶偏好設置( [NSUserDefaul...
    彬至睢陽閱讀 3,005評論 0 7
  • 嘟噥嘟噥:最近接到一個任務:在客戶端動態生成RSA密鑰對,然后向服務器發送這個密鑰對中的公鑰字符串,由服務器進行公...
    TimmyR閱讀 8,098評論 19 21
  • 想牽你的手 陪你到世界盡頭 全世界以你中心 看你快樂就已足夠 你是我的小蛋糕、
    4289閱讀 161評論 0 0