C#将Int转换为两个十六进制字节?

时间:2012-08-11 14:51:52

标签: c# hex

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

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

任何建议都将非常感谢!!!

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

转移它!掩盖吧!掩盖吧! string.Format它!

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

Here's a demo.

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


好吧,显然你只想要两个字节。十六进制与此无关。

byte lowByte = (byte)(n & 0xff);
byte highByte = (byte)(n >> 8 & 0xff);

答案 2 :(得分: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'格式返回它们,您可以通过在ToString()之后添加它来自己添加'0x':

return "0x"+hex.Replace("-", " 0x");

答案 3 :(得分:0)

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

Regex.Replace(number.ToString("X4"), "..", "0x$0 ").TrimEnd();