我想将0到4096(12位)之间的数字转换为C#中的3字符十六进制字符串表示。
示例:
2748 to "ABC"
答案 0 :(得分:3)
试
2748.ToString("X")
答案 1 :(得分:2)
如果您想要3个字符且确定数字在范围内,请使用:
i.ToString("X3")
如果您不确定该号码是否在范围内,这将为您提供超过3位数字。你可以这样做:
(i % 0x1000).ToString("X3")
如果您想要小写字母,请使用小写字母“x3”。
答案 2 :(得分:1)
注意:这假设您使用的是自定义的12位表示形式。如果你只是使用int / uint,那么Muxa的解决方案是最好的。
每四位对应一个十六进制数字。
因此,只需将前四位数字与字母匹配,然后>> 4输入,并重复。
答案 3 :(得分:1)
easy 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];
}
你也可以在一个循环中完成它,但这非常简单,并且循环只有三次转换的开销非常高。
我希望C#具有某种类型的库函数。您甚至可以在C中使用sprintf,我确信C#具有此功能的模拟。
- 亚当