将任何值转换为具有可变长度的Hex

时间:2013-12-14 08:41:53

标签: c#

我正在尝试将可变大小的int32类型的值转换为具有最小长度和0填充的十六进制字符串。

示例:434 = 01 B2

有几种C#方式,但它们都有固定大小,具体取决于值的类型,(例如:Int32将始终给出4字节值,如00 00 00 01,数字1)。

可以写一个代码来做,但我认为有一个更短的方法。

感谢

samtal

3 个答案:

答案 0 :(得分:1)

int x = 434;
string s = x.ToString("X").PadLeft(5,'0');

这将产生001B2

答案 1 :(得分:1)

嗯,Int3ὰ的答案很接近,只需要进一步的数字处理:

int x = 434;
string s = x.ToString("X");
s = s.Length % 2 == 0 ? s : "0" + s;

关于空间问题,我没有想出一个非常简单的方法,但是,你可以看一下this

答案 2 :(得分:0)

感谢WAKU缺少的部分是s = s.Length%2 == 0? s:“0”+ s; 我通过字节迭代和双填充解决了空间(或任何字符),如下所示: (不是很干净但工作)

    int i; string d;
        long x = 258458685;
        string s = x.ToString("X");
        s = s.Length % 2 == 0 ? s : "0" + s;
        for (i = 0; i < s.Length  ; i = i + 2)
        {
            d = s.Substring(i ,2);
            Console.Write(d.PadLeft(2, '0').PadLeft(3,' '));
        }

结果:0F 67 C4 3D