如何在C#中将12位整数转换为十六进制字符串?

时间:2020-03-06 14:49:01  来源:igfitidea点击:

我想将0到4096(12位)之间的数字转换为C#中的3个字符的十六进制字符串表示形式。

例子:

2748 to "ABC"

解决方案

尝试

2748.ToString("X")

注意:假设我们使用的是自定义的12位表示形式。如果我们只使用int / uint,那么Muxa的解决方案是最好的。

每四个位对应一个十六进制数字。

因此,只需将前四个数字与一个字母匹配,然后输入>> 4,然后重复即可。

简单的C解决方案可能是适用的:

char hexCharacters[17] = "0123456789ABCDEF";
void toHex(char * outputString, long input)
{
   outputString[0] = hexCharacters[(input >> 8) & 0x0F];
   outputString[1] = hexCharacters[(input >> 4) & 0x0F];
   outputString[2] = hexCharacters[input & 0x0F];
}

我们也可以循环执行此操作,但这非常简单,而且循环仅进行三个转换就具有相当高的开销。

我希望Chas可以为这种事情提供某种库函数。我们甚至可以在C语言中使用sprintf,而且我敢肯定,可以将此功能模拟一个。

-亚当

如果我们只需要3个字符并且确定该数字在范围内,请使用:

i.ToString("X3")

如果不确定该数字是否在范围内,这将使我们获得3位以上的数字。我们可以执行以下操作:

(i % 0x1000).ToString("X3")

如果要使用小写字母,请使用小写的" x3"。