【问题标题】:C# - Convert a string of hex values to hexC# - 将一串十六进制值转换为十六进制
【发布时间】:2011-08-04 13:49:41
【问题描述】:

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

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

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

stringArray[0] = "0x0f";

byteArray[0] = 0x0f;

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

【问题讨论】:

  • 我认为这个问题本身是有效的。我猜,关闭不会让他接受更多的答案。 user646265:请接受更多对您有帮助的答案。这会让更多人愿意帮助你。
  • 是的,我会做的,但我刚刚获得超过 15 名您需要接受答案的声誉。我以后会这样做,现在我在 16 点。

标签: c# string byte hex


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。当我获得足够的声望点时,我会为你的答案投票。
  • 我会补充一点,遗憾的是响应是错误的。 byte.TryParse 不支持 0x 格式。阅读hereHexNumber Indicates that the AllowLeadingWhite, AllowTrailingWhite, and AllowHexSpecifier styles are usedAllowHexSpecifier Strings that are parsed using this style cannot be prefixed with "0x" or "&h"
【解决方案2】:

非奇数十六进制字符串是正确的。 从你那里检查来源得到这个字符串。 这是因为由于字符数限制而截断了字符串。 如果 String 是 图像存储在数据库中,则使用程序检索它而不使用任何工具

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-01-22
      • 2017-07-31
      • 2013-07-20
      • 2012-06-17
      • 2014-02-05
      • 1970-01-01
      • 2018-01-31
      • 1970-01-01
      相关资源
      最近更新 更多