3

我有一个整数,需要将其转换为四位十六进制值。

例如,假设 int 值为 16。我正在寻找一种从 16 到 0x00 0x10 的方法。

任何建议将不胜感激!!!

4

4 回答 4

2

试试这个:

var input = 16;

var bytes = new byte[2];
bytes[0] = (byte)(input >> 8);  // 0x00
bytes[1] = (byte)input;         // 0x10

var result = (bytes[0] << 8)
           | bytes[1];

// result == 16
于 2012-08-11T15:02:52.607 回答
1

这是一个带有正则表达式的表达式,只是为了好玩:

Regex.Replace(number.ToString("X4"), "..", "0x$0 ").TrimEnd();
于 2012-08-11T15:08:23.410 回答
0

接班!蒙面!蒙面!string.Format它!

int n = 16;
string.Format("0x{0:x2} 0x{1:x2}", (n & 0xff00) >> 8, n & 0xff); // 0x00 0x10

这是一个演示。

格式说明x2符表示 2 位十六进制值。


好的,显然你只需要两个字节。十六进制在这里不相关。

byte lowByte = (byte)(n & 0xff);
byte highByte = (byte)(n >> 8 & 0xff);
于 2012-08-11T14:55:06.563 回答
0

或者,更通用的解决方案是通过字节数组来完成(然后你可以将它用于字符串或其他数据类型)

public static string ByteArrayToString(byte[] ba)
{
   string hex = BitConverter.ToString(ba);
   return hex.Replace("-","");
}

int i = 39;
string str = "ssifm";
long l = 93823;

string hexi = ByteArrayToString(BitConverter.GetBytes(i));
string hexstr = ByteArrayToString(Encoding.Ascii.GetBytes(str));
string hexl = ByteArrayToString(BitConverter.GetBytes(l));

这会以“FF”格式返回它们,您可以自己添加“0x”,方法是在 ToString() 之后添加它:

return "0x"+hex.Replace("-", " 0x");
于 2012-08-11T14:59:44.017 回答