这可能听起来很奇怪,但我的问题是我有一个文本文件中的十六进制值的文本字符串,如下所示:
"0x0f, 0x40, 0xff, ...."
我已将它们存储在由分隔符拆分的数组中,但我现在需要做的是使用十六进制的字节数组:
stringArray[0] = "0x0f";
byteArray[0] = 0x0f;
我该怎么做(用户可以加载文本文件,所以我不知道这些值是什么),我可以使用某种算法吗?
答案 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时遇到了同样的问题