【问题标题】:Convert Binary string to Hex string without losing leading zeros将二进制字符串转换为十六进制字符串而不会丢失前导零
【发布时间】:2014-08-03 09:27:00
【问题描述】:

我正在尝试将二进制字符串转换为十六进制,但是我错过了零值,我的意思是二进制字符串 000001010100 应该变成十六进制字符串 054?

我正在使用

Convert.ToInt32(value,2).ToString("X") 

【问题讨论】:

  • 您能显示您当前用于进行转换的代码吗?
  • Convert.ToInt32(value,2).ToString("X")

标签: c# string binary hex


【解决方案1】:

你可以简单地使用

Convert.ToInt32(value,2).ToString("X3")

其中 X 后面的数字是您希望在最终字符串中包含的最小位数。我使用了数字 3,因为这是您作为示例包含的输出。这个Microsoft documentation有更详细的解释。

【讨论】:

  • +1。适合小数字。如果需要处理 1-4 个十六进制数字,请考虑 "x"+(value.Length / 4) 作为格式。
【解决方案2】:

您可以将字符串拆分为四位数字部分,解析它们并格式化为十六进制数字。这为您提供了正确的位数。示例:

string bin = "000001010100";
string hex = String.Concat(
  Regex.Matches(bin, "....").Cast<Match>()
  .Select(m => Convert.ToInt32(m.Value, 2)
  .ToString("x1"))
);

【讨论】:

  • +1。处理任意长度的字符串,只要它与 4 位对齐。如果还需要处理未对齐的字符串,请考虑使用 for 循环并删除子字符串而不是 Regex
猜你喜欢
  • 1970-01-01
  • 2015-07-20
  • 2016-02-18
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 2017-02-23
  • 2014-08-03
相关资源
最近更新 更多