1

我正在为《现代战争 2》制作培训师。我遇到的问题是将十六进制转换为字符串,我对此很陌生,但在尝试任何事情之前我都会环顾四周。在发布这个问题之前,我也环顾四周。这是我的代码:

private void button1_Click(object sender, EventArgs e)
{
    int xbytesRead = 0;
    byte[] myXuid = new byte[15];
    ReadProcessMemory((int)processHandle, xuidADR, myXuid, myXuid.Length, ref xbytesRead);
    string xuid = ByteArrayToString(myXuid);
    textBox2.Text = xuid;
}

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

我得到的返回值是:330400000100100100000000000000

但我需要它来返回这个:110000100000433

有什么建议么?

4

2 回答 2

0

为什么不使用int?

private void button1_Click(object sender, EventArgs e)
{
int xbytesRead = 0;
byte[] myXuid = new byte[15];
ReadProcessMemory((int)processHandle, xuidADR, myXuid, myXuid.Length, ref xbytesRead);
string xuid = ByteArrayToString(myXuid);
textBox2.Text = xuid;
}

public static string ByteArrayToString(byte[] ba)
{
  int hex=0;
  for(i=0;i<ba.Length;i++)
     hex+=Convert.ToInt(ba[i])*Math.Pow(256,i)
  return hex.ToString("X");
}
于 2014-08-29T13:55:56.660 回答
0

我认为这是一个 Little-Endian 与 Big-Endian 的问题。请尝试以下方法:

public static string ByteArrayToString(byte[] ba)
{
    if (BitConverter.IsLittleEndian)
         Array.Reverse(ba);

    string hex = BitConverter.ToString(ba);
    return hex.Replace("-", "");
}

参考:

于 2014-08-29T13:52:04.543 回答