我有以下字符串
17 80 41 00 01 00 01 00 08 00 44 61 72 65 46 61 74 65 01 00 00 00 01 00 03 00 01 00 09 00 43 68 61 6E 6E 65 6C 2D 31 00 00 02 00 09 00 43 68 61 6E 6E 65 6C 2D 32 65 00 03 00 09 00 43 68 61 6E 6E 65 6C 2D 33 65 00
将用户作为输入并将其作为字节数组的最佳方法是什么?
答案 0 :(得分:13)
尝试:
string text = ...
byte[] bytes = text.Split()
.Select(t => byte.Parse(t, NumberStyles.AllowHexSpecifier))
.ToArray();
如果您只想拆分空格字符(而不是任何空格),请使用Split (' ')
。
答案 1 :(得分:8)
如果用户正在将命令输入到命令行中,请执行以下操作:
string input = GetInput(); // this is where you get the input
string[] numbs = input.Split(' ');
byte[] array = new byte[numbs.Length];
int i = 0;
foreach (var numb in numbs)
{
array[i++] = byte.Parse(numb, NumberStyles.HexNumber);
}
答案 2 :(得分:1)
您可以使用System.Byte中的Parse方法来解析单个hax对:
// Get the string from the user
string s=Console.ReadLine();
// Convert to a byte array
byte[] sBytes=s.Split(new char[] {' '})
.Select(hexChar => byte.Parse(hexChar,NumberStyles.HexNumber))
.ToArray();
// *** Test code follows ***
// Display the bytes (optional), to verify that the conversion worked
StringBuilder hexString=new StringBuilder(sBytes.Length*3);
foreach (byte b in sBytes)
{
// Separate hex pairs with a space
if (hexString.Length>0)
hexString.Append(' ');
// Append next hex pair (i.e., formatted byte)
hexString.AppendFormat("{0:x2}",b);
}
Console.WriteLine(hexString);