C#将Int转换为两个十六进制字节?
试试这个:
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
转换它!掩盖它!掩盖它! 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-11 15:00:14
或者,多一点一般的解决方法是通过字节数组做到这一点(那么你可以用这个字符串或其他数据类型)
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");
我不想要一个字符串......我拥有的是一个数组。阵列中有2个位置需要存储值16.数组的第一个位置需要0x00,第二个需要0x01。请注意,这些不是字符串存储在数组中的数据实际上是字节,因此您可以将其视为array [0] = 0和array [1] = 10 – 2012-08-11 15:06:08
@TackyTacky:如果您需要数组,则可以使用“BitConverter”或者如果它只是你需要的两个而移动)更合适,而十六进制是不相关的。 – Ryan 2012-08-11 15:06:53
这里有一个正则表达式,只是为了好玩:
Regex.Replace(number.ToString("X4"), "..", "0x$0 ").TrimEnd();
如果我这样做,第二个字节不会得到前缀。但是,你可以制作一个更复杂的正则表达式来处理这个问题。 – 2012-08-11 15:13:42
随时在这里玩吧:https://compilify.net/22k/2 – 2012-08-11 15:14:17
http://*.com/questions/4690480/int-to-hex-string – Gir 2012-08-11 14:53:25
你的意思是你想要的十六进制字符串表示的int? – brianestey 2012-08-11 14:53:26
4位是非常小的,呃 – 2012-08-11 14:53:43