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?你们还没有给我们一个什么也行不通的例子。 –