【问题标题】:Hex to byte[] in C# 2.0C# 2.0 中的十六进制到字节 []
【发布时间】:2011-05-31 02:27:33
【问题描述】:

假设有一个字符串hexString = "0x12""0x45" 等。我如何将字符串转换为另一个字节[],如下所示。谢谢。

byte[] myByte = new byte[2];
myByte[0] = 0x1;
myByte[1] = 0x2;

myByte[0] = 0x4;
myByte[1] = 0x5;

当我尝试如下连接子字符串时,

myByte[0] = '0x' + '4'; // Show compile error. It doesn't work.

我不知道如何解决它。谢谢。 等等

【问题讨论】:

  • 所以你想将每个十六进制数字存储在它自己的字节中,而不是更自然的每个字节表示的两个十六进制数字?

标签: c# c#-2.0 bytearray


【解决方案1】:

正在寻找这样的东西吗?

string hex = "0123456789abcdef";

string input = "0x45";
Debug.Assert(Regex.Match(input, "^0x[0-9a-f]{2}$").Success);

byte[] result = new byte[2];
result[0] = (byte)hex.IndexOf(input[2]);
result[1] = (byte)hex.IndexOf(input[3]);

// result[0] == 0x04
// result[1] == 0x05

【讨论】:

  • 其实 string hex = "0x45" (不再需要 string input。)。我需要取出45。并构建新的0x40x5 作为result 的成员
  • 太复杂了,超出了我的需要。 :-)
  • @Nano HE:那你应该更详细地解释你需要什么。
【解决方案2】:

您是否尝试过先搜索它?
试试这个:How to convert hex to a byte array?

【讨论】:

  • 我想,我的问题有点不同。我不需要将整个十六进制字符串转换为字节 []。我需要的是从十六进制数字字符串中取出单个数字,并在每个数字之前与“0x”链接作为单独的十六进制数字。
  • @Nano:什么?如果您只想获取字符串的一部分,请使用hexString.Substring(){msdn}。如果要将字符串拆分为多个,可以使用string.Split(){msdn}
  • 我更新了我的帖子。我实际上想连接子字符串。
猜你喜欢
  • 2017-09-13
  • 2012-01-24
  • 2015-08-08
  • 2011-10-28
  • 2011-06-01
  • 2023-03-14
  • 2011-12-09
  • 2011-01-30
相关资源
最近更新 更多