2013-04-10 16 views
27

Jak przekonwertować int (4 bajty) na hex ("XX XX XX XX") bez cykli?Konwersja int na hex z zerami wiodącymi

na przykład:

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

i.ToString("X") powraca "D", ale muszę wartość hex 4 bajty.

+0

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

+0

@Joetjah odpowiedzi te wspomnieć ' X', o czym OP już wie. To pytanie dotyczy posiadania wiodących cyfr "0". – CodesInChaos

+0

Dobrze jest zamknąć to jako duplikat, jeśli go znalazłeś, ale pytanie, które obecnie zamknąłeś, nie jest duplikatem. Odpowiedzi tam polecam 'ToString (" X ")', które nie generuje zer wiodących, o które prosił OP. – CodesInChaos

Odpowiedz

48

Możesz określić minimalną liczbę cyfr, dodając liczbę cyfr szesnastkowych do ciągu formatu X. Ponieważ dwie cyfry szesnastkowe odpowiadają jednemu bajtowi, twój przykład z 4 bajtami potrzebuje 8 cyfr szesnastkowych. tj. użyj i.ToString("X8").

Jeśli chcesz używać małych liter, użyj x zamiast X. Na przykład 13.ToString("x8") mapy do 0000000d.

+0

Oh ... Dzięki! Nie sądziłem, że to takie proste ... – user2264990

8

spróbuj tego: tylko

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