C# 2.0 中的十六进制到字节 []

Posted

技术标签:

【中文标题】C# 2.0 中的十六进制到字节 []【英文标题】:Hex to byte[] in C# 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.

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

【问题讨论】:

所以你想将每个十六进制数字存储在它自己的字节中,而不是更自然的每个字节表示的两个十六进制数字? 【参考方案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 我更新了我的帖子。我实际上想连接子字符串。

以上是关于C# 2.0 中的十六进制到字节 []的主要内容,如果未能解决你的问题,请参考以下文章

如何用 C# 覆盖二进制文件中的特定字节?

理解 C# 中的十六进制和字节

十六进制字符串到字节数组 C# [重复]

从字符串文本框到十六进制 0x 字节 [] c# [重复]

c# 中从十六进制到字节的最轻量级转换? [复制]

匹配 Elixir 二进制文件中的多个部分以解析 HTTP/2.0 帧