C # Bytes String to Bytes Array

I have the following line of bytes

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

What is the best way to take it as input from the user and make it into an array of bytes?

+8
arrays c # byte
source share
3 answers

Try:

string text = ... byte[] bytes = text.Split() .Select(t => byte.Parse(t, NumberStyles.AllowHexSpecifier)) .ToArray(); 

If you want to separate only the space (and not any spaces), use Split (' ') .

+11
source share

If the user enters it on the command line in the same way, follow these steps:

  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); } 
+7
source share

You can use the Parse method in System.Byte to parse individual hax pairs:

 // 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 (ie, formatted byte) hexString.AppendFormat("{0:x2}",b); } Console.WriteLine(hexString); 
+1
source share

All Articles