我在问这个问题,主要是因为我已经通过这个网站搜索了可能的解决方案,但都没有按照我希望的方式进行。将十六进制字符串转换为无符号字符[]
我想执行将此十六进制字符串转换为无符号字符[]。
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
消息。
你能否解释一下其中的十六进制字符串是从哪里来的?看起来很奇怪,你会有一堆十六进制数据作为字符串。 – rmaddy
起初我对此有点困惑,所以我很抱歉,如果我没有给你你正在寻找的答案。目前,它将来自“TextField”。但我还没有做些什么,比如将ASCII字符串转换为十六进制数据。是的,将十六进制字符串转换为十六进制数据会很奇怪。 –
如果你想将文本转换为可以发送给服务器的NSData,那么只需像这样获取NSData:NSData * textData = [someTextField.text dataUsingEncoding:NSUTF8StringEncoding];'。而已。您现在已经有了以UTF-8编码的文本字节,并且可以发送到服务器。服务器现在可以使用该数据重新创建UTF-8字符串。没有必要进行所有这种十六进制转换。 – rmaddy