0

嗨,我有一些文本框,用户可以输入诸如名字、姓氏等信息。我需要将文本框的文本转换为十六进制,然后将十六进制转换为字节并通过 rs232 发送到设备。

我知道通过 rs232 发送部分。我的问题是我只能使用textbox.text.ToString("X")然后使用以下函数将十六进制转换为字节数组吗?

 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当您将其视为一组位时,无需转换为十六进制。

将“john”转换为“6A6F686E”到字节(仍然觉得将发送的数据加倍很奇怪......):

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 回答