2013-04-10 2 views
27

Как преобразовать int (4 байта) в шестнадцатеричный («XX XX XX XX») без циклов?Преобразование int в hex с ведущими нулями

, например:

i=13 hex="00 00 00 0D" 

i.ToString("X") возвращается "D", но мне нужно шестнадцатеричное значение 4-байта.

+0

http://stackoverflow.com/questions/1139957/c-sharp-convert-integer-to-hex-and-back-again – Joetjah

+0

@Joetjah Эти ответы только упомянуть ' X', который ОП знает. Этот вопрос связан с наличием цифр '0'. – CodesInChaos

+0

Это нормально, чтобы закрыть это как дубликат, если вы его найдете, но вопрос, который вы сейчас закрыли, не дублирует. Ответы там рекомендуют 'ToString (« X »)', который не создает начальные нули, о которых запросил OP. – CodesInChaos

ответ

48

Вы можете указать минимальное количество цифр, добавив количество шестнадцатеричных цифр, которые вы хотите ввести в строку формата X. Поскольку две шестнадцатеричные цифры соответствуют одному байту, ваш пример с 4 байтами требует 8 шестнадцатеричных цифр. то есть использовать i.ToString("X8").

Если вы хотите использовать строчные буквы, используйте x вместо X. Например, 13.ToString("x8") соответствует 0000000d.

+0

Ох ... Спасибо! Я не думал, что все так просто ... – user2264990

8

попробовать это:

int innum = 123; 
string Hex = innum .ToString("X"); // gives you hex 
string Hex = innum .ToString("X8"); // gives you hex 8 digit