将十六进制字符串转换成字节数组

最近在做项目的时候遇到这样一个需求,需要将十六进制的字符串转换成字节数组,通过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];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • NSString *str = @"AA21f0c1762a3abc299c013abe7dbcc50001DD"...
    iOS祎阅读 332评论 0 0
  • 最近在忙一个蓝牙项目,在处理蓝牙数据的时候,经常遇到进制之间的转换,蓝牙处理的是16进制(NSData),而我们习...
    代码移动工程师阅读 1,664评论 0 1
  • 嘟哝嘟哝:最近接到一个任务:在客户端动态生成RSA密钥对,然后向服务器发送这个密钥对中的公钥字符串,由服务器进行公...
    TimmyR阅读 8,334评论 19 21
  • 想牵你的手 陪你到世界尽头 全世界以你中心 看你快乐就已足够 你是我的小蛋糕、
    4289阅读 173评论 0 0
  • 灯火阑珊,看这座城市的黑夜很美! 有时候在想,如果没有遇到你,或许我不会在这里逗留那么久,或许这里只会是我一个路过...
    云安ZzB阅读 319评论 0 0

友情链接更多精彩内容