我正在try 将十六进制NSString转换为NSData(我使用下面附带的代码).以下是输出:

<00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000>

这对我来说完全无关紧要.关于哪里出了问题有什么 idea /建议吗?

NSString *strData = @"72ff63cea198b3edba8f7e0c23acc345050187a0cde5a9872cbab091ab73e553";

NSLog(@"string Data length is %d",[strData length]);

NSMutableData *commandToSend= [[NSMutableData alloc] init];
unsigned char whole_byte;
char byte_chars[2];
int i;
for (i=0; i < [strData length]/2; i++) {

    byte_chars[0] = [strData characterAtIndex:i*2];
    byte_chars[1] = [strData characterAtIndex:i*2+1];
    whole_byte = strtol(byte_chars, NULL, [strData length]);
    [commandToSend appendBytes:&whole_byte length:1]; 
}
NSLog(@"%@", commandToSend);    

推荐答案

NSString *command = @"72ff63cea198b3edba8f7e0c23acc345050187a0cde5a9872cbab091ab73e553";

command = [command stringByReplacingOccurrencesOfString:@" " withString:@""];
NSMutableData *commandToSend= [[NSMutableData alloc] init];
unsigned char whole_byte;
char byte_chars[3] = {'\0','\0','\0'};
int i;
for (i=0; i < [command length]/2; i++) {
    byte_chars[0] = [command characterAtIndex:i*2];
    byte_chars[1] = [command characterAtIndex:i*2+1];
    whole_byte = strtol(byte_chars, NULL, 16);
    [commandToSend appendBytes:&whole_byte length:1]; 
}
NSLog(@"%@", commandToSend);

Objective-c相关问答推荐

Objective-c 点表示法或方括号表示法中首选什么?

OCUnit 的单元测试示例

UIAlertController:supportedInterfaceOrientations 被递归调用

Objective-C 对象的列表 Select 器

目标 C:在不离开应用程序的情况下发送Electron邮件

如何在 UICollectionView 中居中行?

UIDatePicker,根据今天的日期设置最大和最小日期

切换隐私设置将杀死应用程序

检测到与加载的库不匹配的 UUID

如何判断字符串是否仅包含目标C中的字母数字字符?

如何获得本地化的 Cancel、Done 等?

在我的 iOS Mail 和 Safari 应用程序中支持 Open In... 菜单项

如何用 Java 开发 iPhone 应用程序?

在字符串Objective-c中连接字符串

UICollectionView 更新单个单元格

AppDelegate 的当前视图控制器?

xcode 5.1 中的 Arm64 架构

Block 隐式保留'self';明确提及touch以表明这是预期行为

未调用 cellForItemAtIndexPath 但 numberOfItemsInSection 调用

UiTextField 中的第一个字母小写