Проблема с sb.Remove(arr.Length - 1, 1)
: arr.Length
не sb.Length
, потому что символы имеют размер 2 байта, поэтому вы потеряли некоторый символ в середине левой половины.
Вы можете использовать это:
static public string ToHex(byte[] array)
{
var builder = new StringBuilder();
array = array.Reverse().ToArray();
for ( int index = 0; index < array.Length; index++ )
{
builder.Append($"{array[i]:X2} ");
}
return builder.ToString().TrimEnd();
}
Но изменение массива бесполезно и потеря скорости и памяти, так как вы можете уменьшить цикл:
static public string ToHex(byte[] array)
{
var builder = new StringBuilder();
for ( int index = array.Length - 1; index >= 0; index-- )
{
builder.Append($"{array[i]:X2} ");
}
return builder.ToString().TrimEnd();
}