C# - 将十六进制值的字符串转换为十六进制

时间:2011-04-13 09:53:54

标签: c# string byte hex

这可能听起来很奇怪,但我的问题是我有一个文本文件中的十六进制值的文本字符串,如下所示:

"0x0f, 0x40, 0xff, ...."

我已将它们存储在由分隔符拆分的数组中,但我现在需要做的是使用十六进制的字节数组:

stringArray[0] = "0x0f";

byteArray[0] = 0x0f;

我该怎么做(用户可以加载文本文件,所以我不知道这些值是什么),我可以使用某种算法吗?

3 个答案:

答案 0 :(得分:3)

如果您的字符串格式正确,您可以使用此代码创建数组(如果输入格式错误,将抛出异常):

var text = "0x0f, 0x40, 0xff";
var bytes = text
  .Split(new[] { ", " }, StringSplitOptions.None)
  .Select(s => (Byte) Int32.Parse(s.Substring(2), AllowHexSpecifier));

答案 1 :(得分:2)

您只需要解析每个字符串。因为每个只有一个值,所以你可以这样做:

byte b;
if (byte.TryParse(s, NumberStyles.HexNumber, 
    CultureInfo.InvariantCulture.NumberFormat, out b)) 
{
    // b contains the value.
}

其中s是您要解析的字符串,b是结果值。

答案 2 :(得分:0)

非奇数十六进制字符串是正确的。 检查您的来源获取此字符串。 这是因为字符串的限制没有字符串的截断。 如果String 图像存储在数据库中,则使用不使用任何工具的程序检索它

我在使用.net和MSSQL以及使用webservice和Java Client时遇到了同样的问题