如何转换以下内容?
2934(整数)到B76(十六进制)
让我解释一下我要做什么。我的数据库中有以整数形式存储的用户id。而不是让用户引用他们的id,我想让他们使用十六进制值。主要原因是它比较短。
所以我不仅需要从整数变成十六进制还需要从十六进制变成整数。
在c#中有简单的方法来做到这一点吗?
如何转换以下内容?
2934(整数)到B76(十六进制)
让我解释一下我要做什么。我的数据库中有以整数形式存储的用户id。而不是让用户引用他们的id,我想让他们使用十六进制值。主要原因是它比较短。
所以我不仅需要从整数变成十六进制还需要从十六进制变成整数。
在c#中有简单的方法来做到这一点吗?
当前回答
Use:
int myInt = 2934;
string myHex = myInt.ToString("X"); // Gives you hexadecimal
int myNewInt = Convert.ToInt32(myHex, 16); // Back to int again.
有关更多信息和示例,请参见如何:在十六进制字符串和数字类型之间转换(c#编程指南)。
其他回答
Use:
int myInt = 2934;
string myHex = myInt.ToString("X"); // Gives you hexadecimal
int myNewInt = Convert.ToInt32(myHex, 16); // Back to int again.
有关更多信息和示例,请参见如何:在十六进制字符串和数字类型之间转换(c#编程指南)。
打印十六进制值的整数与零填充(如果需要):
int intValue = 1234;
Console.WriteLine("{0,0:D4} {0,0:X3}", intValue);
https://learn.microsoft.com/en-us/dotnet/standard/base-types/how-to-pad-a-number-with-leading-zeros
string HexFromID(int ID)
{
return ID.ToString("X");
}
int IDFromHex(string HexID)
{
return int.Parse(HexID, System.Globalization.NumberStyles.HexNumber);
}
但我真的怀疑这东西的价值。你的目标是使值更短,这是可以做到的,但这本身并不是一个目标。你的意思是要么让它更容易记,要么让它更容易打。
如果你的意思是更容易记住,那么你就后退了一步。我们知道它的大小是一样的,只是编码不同了。但是你的用户不会知道这些字母被限制为“A-F”,所以ID对他们来说将占据相同的概念空间,就像字母“A-Z”被允许一样。因此,它不像记忆电话号码,而更像记忆GUID(相同长度)。
如果你指的是打字,用户现在必须使用键盘的主要部分,而不是能够使用小键盘。打字可能会更困难,因为他们的手指不认识这个词。
一个更好的选择是让他们选择一个真实的用户名。
int valInt = 12;
Console.WriteLine(valInt.ToString("X")); // C ~ possibly single-digit output
Console.WriteLine(valInt.ToString("X2")); // 0C ~ always double-digit output
整数到十六进制:
Int a = 72; 控制台。WriteLine(“{0:X}”);
十六进制到整型:
int b = 0xB76; Console.WriteLine (b);