Вы можете использовать BitConverter.ToString()
и отбросить дефисы, используемые в качестве разделителя:
"0x" + BitConverter.ToString(bytes).Replace("-", "")
Или вы можете использовать LINQ и string.Concat()
. Версия .Net 4:
"0x" + string.Concat(bytes.Select(b => b.ToString("X2")))
В .Net 3.5 необходимо добавить ToArray()
:
"0x" + string.Concat(bytes.Select(b => b.ToString("X2")).ToArray())
Это не соответствует вашей спецификации относительно усечения и добавления пробелов, но я не уверен, что вам это нужно. И для этого должно быть легко изменить код.
Обе эти версии в первую очередь предназначены для удобочитаемости и второй для производительности Если вам нужно, чтобы это было очень быстро, вы можете использовать StringBuilder
и добавить отформатированные байты вручную.