使用ToString将字节转换为两位十六进制数?

68

我可以用以下方法将一个字节转换为十六进制数:

myByte.ToString("X")

但如果数字小于0x10,它只有一位数。我需要在前面加上一个零。有没有一种格式化字符串可以在单个调用ToString中实现这个功能?

2个回答

157

我相信是myByte.ToString("X2")。


26
备忘录:X2中的数字“2”表示有两个数字。例如,0A。而X4则表示显示000A。 - checksum
8
同样有效的写法是:string.Format("{0:X2}",myByte),自C# 6起,也可以使用$"{myByte:X2}"形式。 - Konamiman
5
同时:格式说明符中的X大小写会影响十六进制数字的大小写。例如,255.ToString("X2")返回FF,而255.ToString("x2")返回ff - Steven Rands

-2

也许你喜欢按照以下方式进行:

private static void byte2hex(byte b, StringBuilder buf)
    {
        char[] hexChars = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                            'A', 'B', 'C', 'D', 'E', 'F' };
        int high = ((b & 0xf0) >> 4);
        int low = (b & 0x0f);
        buf.Append(hexChars[high]);
        buf.Append(hexChars[low]);
    }

1
你如何产生最终结果仅受语言限制。然而,这并不是一个推荐的方式,但再次说一遍,它让我微笑 - 我会补充说明是一种好的方式。要使其工作,您需要在参数中的 StringBuilder 之前添加 ref。 - Neil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接