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" (不再需要 stringinput
。)。我需要取出4
和5
。并构建新的0x4
和0x5
作为result
的成员
太复杂了,超出了我的需要。 :-)
@Nano HE:那你应该更详细地解释你需要什么。【参考方案2】:
您是否尝试过先搜索它? 试试这个:How to convert hex to a byte array?
【讨论】:
我想,我的问题有点不同。我不需要将整个十六进制字符串转换为字节 []。我需要的是从十六进制数字字符串中取出单个数字,并在每个数字之前与“0x”链接作为单独的十六进制数字。 @Nano:什么?如果您只想获取字符串的一部分,请使用hexString.Substring()
msdn。如果要将字符串拆分为多个,可以使用string.Split()
msdn
我更新了我的帖子。我实际上想连接子字符串。以上是关于C# 2.0 中的十六进制到字节 []的主要内容,如果未能解决你的问题,请参考以下文章