融智技术学院

 找回密码
 注册
Xamarin XAML语言教程套装
查看: 289|回复: 0

【iPhone每日一问】如何将16进制的字符串转换为数据类型?

[复制链接]
MrLi 发表于 2014-3-2 16:00:07 | 显示全部楼层 |阅读模式

问:
我正在尝试将16进制的字符串转换为数据类型(我使用下面的附加代码),以下是它的输出:
  1. <00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000>
复制代码
这看起来完全与我无关。在哪里出错了我需要任何想法/建议?
  1. NSString *strData = @"72ff63cea198b3edba8f7e0c23acc345050187a0cde5a9872cbab091ab73e553";
  2. NSLog(@"string Data length is %d",[strData length]);
  3. NSMutableData *commandToSend= [[NSMutableData alloc] init];
  4. unsigned char whole_byte;
  5. char byte_chars[2];
  6. int i;
  7. for (i=0; i < [strData length]/2; i++) {
  8.     byte_chars[0] = [strData characterAtIndex:i*2];
  9.     byte_chars[1] = [strData characterAtIndex:i*2+1];
  10.     whole_byte = strtol(byte_chars, NULL, [strData length]);
  11.     [commandToSend appendBytes:&whole_byte length:1];
  12. }
  13. NSLog(@"%@", commandToSend);  
复制代码
答:
  1. NSString *command = @"72ff63cea198b3edba8f7e0c23acc345050187a0cde5a9872cbab091ab73e553";
  2. command = [command stringByReplacingOccurrencesOfString:@" " withString:@""];
  3. NSMutableData *commandToSend= [[NSMutableData alloc] init];
  4. unsigned char whole_byte;
  5. char byte_chars[3] = {'\0','\0','\0'};
  6. int i;
  7. for (i=0; i < [command length]/2; i++) {
  8.     byte_chars[0] = [command characterAtIndex:i*2];
  9.     byte_chars[1] = [command characterAtIndex:i*2+1];
  10.     whole_byte = strtol(byte_chars, NULL, 16);
  11.     [commandToSend appendBytes:&whole_byte length:1];
  12. }
  13. NSLog(@"%@", commandToSend);
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

新突破电商

小黑屋|手机版|Archiver|融智技术学院 ( 京ICP备09018999号 )

GMT+8, 2019-7-19 02:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表