2017-02-06 4 views
1

BigInteger.toString (16) macht die Arbeit, aber manchmal variiert die Anzahl der Bytes des Hex. Ich brauche jedes Mal genau 512 Bytes Hex. Ich habe auch Apache Hex und DataTypeConverter und mehr versucht. Aber keine garantiert diese Konsistenz. Gibt es noch eine andere Java-Bibliothek, um ein Hex-Objekt fester Länge von einem bestimmten BigInteger zu generieren?Wie BigInteger in Hex der festen Länge konvertieren?

PS: Ich habe stackoverflow vor dem Posten gesucht, aber keine Diskussion mit Fixed Length Hex-Problem gefunden.

+4

Haben Sie versucht ein Format wie '"% 0512x "'? –

+1

Ich denke du meinst 'Zeichen' nicht 'Bytes'. Und natürlich sind 512 Hex-Zeichen viel, aber wie würden Sie diese Länge garantieren, wenn der Wert tatsächlich zu groß ist, um in 512 Zeichen zu passen? – GhostCat

+0

@GhostCat tatsächlich ist es Hex eines privaten Schlüssel-Exponenten, dessen Bitlänge um 2048 ist. Deshalb ist es groß. – Pratap

Antwort

5

Wie in den Kommentaren angegeben, verwenden String s = String.format("%0512x", BigInteger.valueOf(theNumber))

Formatter BigInteger jedoch zwingend nötig: siehe seine Dokumentation here.

+0

Wird dies das Hex des BigIntegers auswerten? – Pratap

+0

@ Pratap Bitte lesen Sie ** sorgfältig **. In dieser Antwort gibt es einen ** Link **, der auf die Dokumentation von ** Formatierungsmustern * verweist. Stellen Sie keine Fragen für Fragen, die bereits beantwortet wurden. Lies einfach die Antwort ... so oft wie nötig, um es zu verstehen ;-) ... und verstehe: BigInteger ist nur ein numerischer Wert. Wie ein String aussieht, der aus diesem Wert generiert wird, hat nichts mit dem Wert selbst zu tun. BigInteger ist nicht "hex" (oder nicht-hex), es ist eine Zahl. Hex kommt herein, wenn Sie den Wert als Zeichenfolge formatieren! – GhostCat

+0

@EmmanuelLonca danke für die Lösung. Arbeitete wie ein Charme mit einer kleinen Veränderung. 'String s = String.format ("% 0512x", bigIntegerNumber) ". – Pratap