2011-04-13 203 views
1

这听起来有点奇怪,但我的问题是,我有十六进制值的文本字符串从一个文本文件,像这样:C# - 转换十六进制值的字符串为十六进制

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

我已经将它们存储在由分隔符分成数组,但我现在需要做的是有一个字节数组什么大公是十六进制:

stringArray[0] = "0x0f"; 

byteArray[0] = 0x0f; 

我如何做到这一点(用户可以加载文本文件,所以我不知道这些值是什么),是否有某种我可以使用的算术?

+0

这个问题本身是有效的在同样的问题检索我的想法。我想,收官不会让他接受更多的答案。 user646265:请接受更多帮助你的答案。这会让更多人想要帮助你。 – OregonGhost 2011-04-13 10:02:34

+1

是的,我会这样做,但我只是得到了超过15个你需要接受答案的声望。我将来会这样做,现在我在16分。 – user646265 2011-04-13 12:15:47

回答

1

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

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

s是要分析该字符串,b是所得到的值。

+0

谢谢。当我获得足够的声望点时,我会投票答复你的答案。 – user646265 2011-04-13 14:03:49

+4

我会补充说,悲伤的回应是错误的。 'byte.TryParse'不支持0x格式。阅读它[这里](http://msdn.microsoft.com/en-us/library/system.globalization.numberstyles.aspx)'HexNumber表示使用AllowLeadingWhite,AllowTrailingWhite和AllowHexSpecifier样式'和'AllowHexSpecifier字符串使用这种风格的解析不能以“0x”或“&h”'作为前缀 – xanatos 2012-03-16 08:57:52

3

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

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

十六进制字符串是正确的。 检查你的源代码得到这个字符串。 这是因为限制字符数而导致字符串截断。 如果字符串是图像存储在数据库中,然后使用程序不使用任何工具

我与.NET和MSSQL,通过使用互联网服务和Java客户端

相关问题