我想制作一个这样的Byte[]

Byte[] data = { 0x10, 0x02, 0x04, 0x00, 0x00, 0x25, 0x23, 0x05, 0xb1, 0x10, 0x03 };


但是我必须从用户那里得到这些。我对Console.ReadLine以及将其转换为int或Byte或其他任何东西都感到厌倦,因为x不是数字,所以它们都不起作用。

问题是如何从用户那里获取0x100x25并设置为Byte[]

最佳答案

您可以将输入字符串Split分成多个块Convert每个块至字节,最后将它们实现ToArray

 // You can let user input the array as a single string
 // Test/Demo; in real life it should be
 // string source = Console.ReadLine();
 string source = "0x10, 0x02, 0x04, 0x00, 0x00, 0x25, 0x23, 0x05, 0xb1, 0x10, 0x03";

 byte[] result = source
   .Split(new char[] {' ', ':', ',', ';', '\t'}, StringSplitOptions.RemoveEmptyEntries)
   .Select(item => Convert.ToByte(item, 16))
   .ToArray();


让我们将数组表示为字符串:

 string test = string.Join(", ", result
   .Select(item => "0x" + item.ToString("x2")));

 // "0x10, 0x02, 0x04, 0x00, 0x00, 0x25, 0x23, 0x05, 0xb1, 0x10, 0x03"
 Console.Write(test);

关于c# - C#如何在字节[]中设置0x ..,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41805853/

10-17 02:02