我有一个整数,我需要转换为四位十六进制值。
例如,假设int值为16.我正在寻找的是从16到16的方法 0x00 0x10。
任何建议都将非常感谢!!!
答案 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
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();