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

如何在C#中将12位整数转换为十六进制字符串?,c#,C#,我想将0到4096(12位)之间的数字转换为C#中的3个字符的十六进制字符串表示形式 例如: 2748 to "ABC" 2748至“ABC” 试一试 试一试 注意:这假设您使用的是自定义的12位表示。如果您只是使用int/uint,那么Muxa的解决方案是最好的 每四位对应一个十六进制数字 因此,只需将前四位数字与字母匹配,然后>>4输入,然后重复。注意:这假设您使用的是自定义的12位表示。如果您只是使用int/uint,那么Muxa的解决方案是最好的 每四位对应一个十六进制数字 因此,只需将

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

例如:

2748 to "ABC" 2748至“ABC” 试一试

试一试


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

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


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

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

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


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

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#也有类似的功能


-Adam

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#也有类似的功能


-Adam

如果您想要正好3个字符,并且确定数字在范围内,请使用:

i.ToString("X3")
如果您不确定该数字是否在范围内,这将为您提供超过3位数字。你可以这样做:

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

如果您想要小写字母,请使用小写“x3”。

如果您想要正好3个字符,并且确定数字在范围内,请使用:

i.ToString("X3")
如果您不确定该数字是否在范围内,这将为您提供超过3位数字。你可以这样做:

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

如果您想要小写字母,请使用小写“x3”。

这是代码问题还是作业,还是您只是想跨越这一障碍?对于后一个字符串。用一些神奇的咒语格式化可以完成任务。这是一个代码问题还是一个任务,还是你只是想跨越这个障碍?对于后一个字符串。用一些魔法咒语格式化可以完成任务。对不起,这是一个C#特定的问题,无论如何谢谢。嗯,问题是,贾斯汀·坦纳,他完美地展示了算法。对不起,这是一个C#特定的问题,无论如何谢谢。嗯,问题是,贾斯汀·坦纳,他完美地展示了算法。请注意,如果您的整数小于或等于255,则无法从中提取3个字符。请注意,如果您的整数小于或等于255,则无法从中提取3个字符。2748。ToString(“X”)的结果是“ABC”而不是“0ABC”2748。ToString(“X”)的结果是“ABC”而不是“0ABC”%这是一个相当昂贵的手术。ToString(“X3”)在功能上类似,而且更快(尽管我希望编译器以两种方式生成相同的代码)%是一个非常昂贵的操作。ToString(“X3”)在功能上类似,而且速度更快(尽管我希望编译器以两种方式生成相同的代码)