最近在做項(xiàng)目的時(shí)候遇到這樣一個(gè)需求,需要將十六進(jìn)制的字符串轉(zhuǎn)換成字節(jié)數(shù)組,通過Socket連接,調(diào)用硬件接口控制燈光的開關(guān)以及其他硬件的需求。
NSString *str = @"AA21f0c1762a3abc299c013abe7dbcc50001DD"
將里面的字符轉(zhuǎn)換到Byte數(shù)組中,如下
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
應(yīng)用:
NSData *data = [str hexToBytes];