Mam liczbę całkowitą: 1695609641
kiedy używam metody:
String hex = Integer.toHexString(1695609641);
system.out.println(hex);
daje:
6510f329
ale chcę tablicę bajtów:
byte[] bytearray = new byte[] { (byte) 0x65, (byte)0x10, (byte)0xf3, (byte)0x29};
Jak mogę to zrobić?
Odpowiedzi:
korzystanie z ByteBuffer Java NIO jest bardzo proste:
wynik:
źródło
"0x%02X"
jeśli zawsze chcesz mieć dwa znaki szesnastkowe, a także wielkie litery szesnastkowe, np .System.out.format("0x%02X", (byte) 10)
Ekrany0x0A
.Co powiesz na:
Pomysł nie jest mój . Wziąłem to z jakiegoś posta na dzone.com .
źródło
>>>
zamiast prawego operatora zmiany>>
( docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html ), więc zachowanie może być inne niż pożądane / zgodnie z oczekiwaniami z numerami podpisanymi vs niepodpisanymiBigInteger.valueOf(1695609641).toByteArray()
źródło
BigInteger.toByteArray()
stanów: „Tablica będzie zawierać minimalną liczbę bajtów wymaganą do reprezentacji tego BigInteger ...”źródło
Używanie Guawy :
źródło
źródło
źródło
Fragmenty poniżej działają przynajmniej w przypadku wysyłania int przez UDP.
int na tablicę bajtów:
tablica bajtów na int:
źródło
Ponieważ na ogół chciałbyś przekonwertować tę tablicę z powrotem na liczbę int w późniejszym czasie, oto metody konwersji tablicy ints na tablicę bajtów i odwrotnie:
Zauważ, że ze względu na propagację znaków i tym podobne, „& 0xFF ...” są potrzebne przy konwersji z powrotem na int.
źródło
dla pierwszego bajtu
dla drugiej i pętli itp., zapisywanie do wstępnie przydzielonej tablicy bajtów. Niestety, trochę niechlujny.
źródło
Klasa org.apache.hadoop.hbase.util.Bytes ma kilka przydatnych metod konwersji byte [], ale możesz nie chcieć dodawać całego słoika HBase do swojego projektu tylko w tym celu. Zaskakujące jest to, że w JDK brakuje takiej metody AFAIK, ale także oczywistych bibliotek, takich jak commons io.
źródło
Moja próba:
Dzięki niemu możesz to zrobić:
Pełna klasa jest tutaj: https://gist.github.com/superbob/6548493 , obsługuje inicjalizację od krótkich lub długich
źródło
Jeśli używasz apache-commons
źródło