iphone - 将 HEX NSString 转换为 NSData

标签 iphone objective-c ios nsstring nsdata

我正在尝试将十六进制 NSString 转换为 NSData(我正在使用以下附加代码)。以下是输出:

<00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000>

这看起来与我完全无关。关于哪里出错的任何想法/建议?

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

关于iphone - 将 HEX NSString 转换为 NSData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7317860/

相关文章:

iphone - 更改 UIImage(不是 UIImageView)的透明度

objective-c - NSNumber如何获得最小公分母?像 3/8 代表 0.375?

ios - 具有不同角色的实时多人游戏的 Google Play 游戏

ios - 为什么我的 Apple Ad hoc 或分发配置文件不允许在所有设备上安装应用程序?

ios - TableView(搜索结果 TableView )有时会意外滚动

iphone - 使用半透明的 UINavigationBars

iphone - Xcode 在build设置中仅显示有效的代码签名身份

ios - 如何使用callkit 框架在iOS 原生ui 调用中显示来电图像?

支持 iOS Web 通知吗?

ios - Swift 中的 4 x 2 按钮键盘