好吧,我得到了我的 HexString(PacketS),例如“70340A0100000000000000”,我想每次在 2 个字符后拆分并将其放入字节数组(流)中。
表示 {70, 34, 0A, 01, 00, 00, 00, 00, 00, 00, 00}
最短路径(.NET 4+)是(取决于长度或原点):
byte[] myBytes = BigInteger.Parse("70340A0100000000000000", NumberStyles.HexNumber).ToByteArray();
Array.Reverse(myBytes);
myStram.write(myBytes, 0, myBytes.Length);
对于以前的版本 string.length/2 还定义了一个字节数组的长度,该长度可以为每个解析的对填充。这个字节数组可以像上面那样写在流上。
对于这两种情况,如果您的原始字符串太长,并且您希望避免使用巨大的字节数组,请继续执行从您的原始字符串获取 N 个字符组的步骤。
这实际上很完美!很抱歉,如果您的代码相同,但我只是不明白。
public static byte[] ConvertHexStringToByteArray(string hexString)
{
if (hexString.Length % 2 != 0)
{
throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, "The binary key cannot have an odd number of digits: {0}", hexString));
}
byte[] HexAsBytes = new byte[hexString.Length / 2];
for (int index = 0; index < HexAsBytes.Length; index++)
{
string byteValue = hexString.Substring(index * 2, 2);
HexAsBytes[index] = byte.Parse(byteValue, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
}
return HexAsBytes;