0

こんにちは、ユーザーが名前、姓などの情報を入力するテキスト ボックスがいくつかあります。テキスト ボックスのテキストを 16 進数に変換してから、16 進数をバイトに変換し、rs232 経由でデバイスに送信する必要があります。

私はrs232部分を介した送信を知っています。私の質問はtextbox.text.ToString("X")、次の関数を使用して16進数をバイト配列に変換することしかできませんか?

 public static byte[] StringToByteArray(String hex)
{
  int NumberChars = hex.Length;
  byte[] bytes = new byte[NumberChars / 2];
  for (int i = 0; i < NumberChars; i += 2)
  bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
  return bytes;
 }
4

1 に答える 1

1

ASCIIを想定(コメントに基づく):

var bytes = textbox.Text
                   .Select(c => (byte)c)  // cast every character to a byte
                   .ToArray();

charsビットの集合と考える場合、16 進数に変換する必要はありません。

「john」から「6A6F686E」までをバイト単位で取得するには (送信されるデータが 2 倍になるのは奇妙ですが...):

var bytes = textbox.Text
                   .Select(c => (byte)c)   // to byte
                   .SelectMany(b => b.ToString("X"))  // to hex
                   .Select(c => (byte)c) // to "hex-byte"
                   .ToArray();
于 2013-08-01T16:48:56.970 に答える