1

我问这个问题主要是因为我在这个网站上搜索了可能的解决方案,但没有一个能达到我希望的效果。

我想将此十六进制字符串转换为无符号字符 []。

NSString *text = @"0043600001";进入 unsigned char dataSmall[] = {0x00, 0x43, 0x60, 0x00, 0x01}

我需要十六进制表示0x##因为我发送的主机只接受消息hexadecimal format。我说得对吗,我也需要NSScanner执行这些步骤来分隔 2 个字符?真的很迷茫,对我需要做什么感到困惑。

这是连接并将十六进制消息发送到主机的步骤:

unsigned char dataSmall[] = {0x00, 0x43, 0x60, 0x00, 0x01}
NSData *data = [NSData dataWithBytes:dataSmall length:sizeof(dataSmall)];

PS,我不知道这NSData部分,但是当我使用 NSData 行向主机发送十六进制消息时,它似乎可以工作。所以我保持原样。目前,dataSmall[]是硬编码的,我想知道如何动态处理它。非常感谢这里的所有帮助。

编辑 1 啊,我错过了一个重要信息。十六进制数据ISO8583本身就是一条消息。

4

1 回答 1

0
NSScanner *scan = [[NSScanner alloc] initWithString:@"1F61E"];
unsigned int val;
[scan scanHexInt:&val];
char cc[4];
cc[3] = (val >> 0) & 0xFF;
cc[2] = (val >> 8) & 0xFF;
cc[1] = (val >> 16) & 0xFF;
cc[0] = (val >> 24) & 0xFF;
NSString *s = [[NSString alloc]
               initWithBytes:cc
               length:4
               encoding:NSUTF32StringEncoding];
NSLog(@"[%@]", s);
于 2013-04-01T04:12:55.773 回答