C# - байтовый массив в шестнадцатеричную строку
Я работаю тренером по Modern Warfare 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
Какие-либо предложения?
2 ответа
Почему не использовать 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");
}
Я думаю, что это проблема Little-Endian против Big-Endian. Пожалуйста, попробуйте следующее:
public static string ByteArrayToString(byte[] ba)
{
if (BitConverter.IsLittleEndian)
Array.Reverse(ba);
string hex = BitConverter.ToString(ba);
return hex.Replace("-", "");
}
Рекомендации: