如何在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"。