我在問這個問題,主要是因爲我已經通過這個網站搜索了可能的解決方案,但都沒有按照我希望的方式進行。將十六進制字符串轉換爲無符號字符[]
我想執行將此十六進制字符串轉換爲無符號字符[]。
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