将二进制字符串转换为十六进制字符串而不会丢失前导零

时间:2014-06-12 22:23:22

标签: c# string binary hex

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

我目前正在使用

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

您只需使用

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

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