IFormattable.ToString не работает должным образом для шестнадцатеричного форматирования
String.Format и IFormattable.ToString (format, value) обеспечивают различный результат при попытке форматирования в шестнадцатеричный формат. Как получить правильные результаты при использовании IFormattable.ToString (формат, значение)
string format = "0x{0:X4}";
Console.WriteLine(string.Format(format, 255)); //prints- 0x00FF
IFormattable formattableValue = (IFormattable)255;
Console.WriteLine(formattableValue.ToString(format, null)); //prints- 25x{5:X4}