2010-12-13 5 views
1

Grundsätzlich bin ich auf der Suche nach .NET BitConverter.Java: Konvertierung von String zu Byte-Array, dann zu Long-Wert und umgekehrt

Ich brauche Bytes aus String, dann analysieren sie zu lange Wert und speichern Sie es. Lesen Sie danach long value, parse to byte array und erstellen Sie den ursprünglichen String. Wie kann ich dies in Java erreichen?

Edit: Jemand hat bereits ähnliche Frage gestellt. Ich sehe eher für Proben dann javadoc Referenz ...

+1

Was ist sein kann falsch mit Javadoc Referenz? –

+1

Warum würden Sie byte [] in long [] umwandeln, um sie zu speichern. Das Problem ist, dass lang muss mehrere 8 Bytes lang sein, wenn Ihre Zeichenfolge kein Vielfaches von 8 ist, müssen Sie auch die Länge aufzeichnen. Warum speichern Sie nicht das Byte [] als ein Byte [], dies ist das einfachste und effizienteste. –

+0

@Die Elite Gentleman Es ist etwas, was ich selbst getan habe und war nicht in der Lage herauszufinden, wie beschrieben Problem zu lösen :) – Xorty

Antwort

2

String hat eine getBytes Methode. Sie könnten dies verwenden, um ein Byte-Array zu erhalten.

Um das Byte-Array als longs zu speichern, schlage ich vor, dass Sie das Byte-Array in eine ByteBuffer umhüllen und die asLongBuffer Methode verwenden.

Um die String aus einem Array von Bytes zurück zu bekommen, könnten Sie den String(byte[] bytes) Konstruktor verwenden.

String input = "hello long world"; 

byte[] bytes = input.getBytes(); 
LongBuffer tmpBuf = ByteBuffer.wrap(bytes).asLongBuffer(); 

long[] lArr = new long[tmpBuf.remaining()]; 
for (int i = 0; i < lArr.length; i++) 
    lArr[i] = tmpBuf.get(); 

System.out.println(input); 
System.out.println(Arrays.toString(lArr)); 
// store longs... 

// ...load longs 
long[] longs = { 7522537965568945263L, 7955362964116237412L }; 
byte[] inputBytes = new byte[longs.length * 8]; 
ByteBuffer bbuf = ByteBuffer.wrap(inputBytes); 
for (long l : longs) 
    bbuf.putLong(l); 
System.out.println(new String(inputBytes)); 

See it in action at ideone.com

Beachten Sie, dass Sie wahrscheinlich eine zusätzliche ganze Zahl zu sagen, wie viele Bytes die Lang Array tatsächlich speichert speichern möchten, da die Anzahl der Bytes nicht ein Vielfaches von 8.

+0

Und wie erhalten Sie ursprüngliche Zeichenfolge aus Bytes zurück? – Xorty

+0

aktualisierte die Antwort. – aioobe

+0

Wie würden Sie die lange zurück zu Byte-Array analysieren? –

Verwandte Themen