0
我建立這需要發送分組到服務器以特定格式的客戶端應用,使得如果該字節是0xA3執行,服務器期望它爲{0x3A,0x33}轉換十六進制字符串字節到字節數組
我早些時候使用了下面的方法。如果該字節是例如0x89,則它工作良好。但是,如果該字節是0xA3執行它不工作預期輸出的
string hex = hexStr .Length == 1 ? "0" + hexStr:hexStr ;
byte packet1 = (byte)(int.Parse(hex[0].ToString(), System.Globalization.NumberStyles.HexNumber) + 0x30);
byte packet2 = (byte)(int.Parse(hex[1].ToString(), System.Globalization.NumberStyles.HexNumber) + 0x30);
實例
- 輸入=> 0x89上,輸出=> {0x38,0x39}
- 輸入=> 0xA3執行,輸出=> {0x3A,0x33}
然而如果我使用上面的代碼我得到以下輸出
- 輸入=> 0x89上,輸出=> {0x38,0x39}
- 輸入=> 0xA3執行,輸出=> {的0x41,0x33}
它*實際*總是以「0x」開始?如果是這樣,當然你可以拋棄你的第一部分。如果不是,你真的需要告訴我們這些案件是什麼。現在,您似乎試圖從這些數據中獲取兩個字節 - 但兩個十六進制數字代表一個字節。只要使用'byte.Parse' ...如果它不起作用,請告訴我們哪些情況下它不起作用... –
@JonSkeet我編輯了我的問題。要求是我應該從hexStr形成一個字節數組,這樣每個半字節在數組中表示爲一個單獨的字節 –
哇,這在*之前並不明顯......它仍然不清楚爲什麼有一個加法0x30在每種情況下......爲什麼不是你的半字節0xA,0x6?你們還沒有給我們一個什麼也行不通的例子。 –