C# 十六进制从低位变为高位,再从高位变为十进制

C# 十六进制从低位变为高位,再从高位变为十进制,c#,hex,decimal,C#,Hex,Decimal,我有类似1480D604的十六进制字符串。我需要将顺序从低位更改为高位0x04D68014,然后将其转换为十进制值。我能想到的一个方法是先改变他们的顺序 步骤1:14-80-D6-04-->04-D6-80-14 如何在十六进制值中将此顺序从低位更改为高位 步骤2 将第一步的输出转换为十进制值,如下所示 int decValue=int.Parse(hexValue,System.Globalization.NumberStyles.HexNumber) 0x04D68014=81166356

我有类似1480D604的十六进制字符串。我需要将顺序从低位更改为高位0x04D68014,然后将其转换为十进制值。我能想到的一个方法是先改变他们的顺序

步骤1:14-80-D6-04-->04-D6-80-14

如何在十六进制值中将此顺序从低位更改为高位

步骤2

将第一步的输出转换为十进制值,如下所示

int decValue=int.Parse(hexValue,System.Globalization.NumberStyles.HexNumber)

0x04D68014=81166356


有没有简单的方法可以一步实现这一点。

您可以通过反转字节数组来实现。因此,首先使用以下方法将字符串转换为字节数组:

public static byte[] StringToByteArray(String hex)
{
  int NumberChars = hex.Length;
  byte[] bytes = new byte[NumberChars / 2];
  for (int i = 0; i < NumberChars; i += 2)
  bytes[i / 2] = Convert.ToByte(hex.Substring(i, 2), 16);
  return bytes;
}
然后反转字节数组:

Array.Reverse(byteArray);
然后使用以下方法再次将其转换回十六进制字符串:

public static string ByteArrayToString(byte[] ba)
{
  StringBuilder hex = new StringBuilder(ba.Length * 2);
  foreach (byte b in ba)
    hex.AppendFormat("{0:x2}", b);
  return hex.ToString();
}
使用like:

string reversedString = ByteArrayToString(byteArray);
最后将其转换为
int
,如您所述:

int decValue = int.Parse(reversedString, System.Globalization.NumberStyles.HexNumber);

就这样。希望有帮助。

在“单步”中完成此操作的唯一方法是定义一个方法,使用:

用法:

int value = 0x1480D604; //or parse from string
int decValue = ReverseByteOrder(value);
//decValue = 0x04D68014
利特林迪亚岛 严格地说,您应该查看订单是否已经处于正确的顺序,这取决于它运行的系统


这是不太可能的,因此我不会费心编写这种情况的代码,但如果在
位转换器的系统上运行,我至少会导致程序崩溃。IsLittleEndian
不是
true

所以
0x04D68014
是从低到高的顺序?是的,在我们端接收的数据是以相反的顺序显示的“十进制”也就是说,你说的是一个整数,你不需要解析每个字符,你可以使用int.parse和BitConverter.GetBytes,如中所示。也不需要将字节数组转换为字符串来获取int,BitConverter.ToInt32将直接实现这一点。虽然有较短的实现方法,但这一方法也可以实现。是我第一次想到的。。。
public static int ReverseByteOrder(int value)
{
    byte[] bytes = BitConverter.GetBytes(value);
    Array.Reverse(bytes);
    return BitConverter.ToInt32(bytes, 0);
}
int value = 0x1480D604; //or parse from string
int decValue = ReverseByteOrder(value);
//decValue = 0x04D68014