我问这个问题主要是因为我在这个网站上搜索了可能的解决方案,没有一个按照我希望的方式解决。
我想将此Hex字符串转换为unsigned char []。
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)];
P.S,我不知道NSData
部分,但是当我使用NSData线路向主机发送十六进制消息时似乎有效。所以我将它保留原样。目前,dataSmall[]
是硬编码的,我想知道如何动态处理它。非常感谢所有帮助。
编辑1
啊,我错过了一个重要的信息。十六进制数据本身是ISO8583
消息。
答案 0 :(得分: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);