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.
Was ist sein kann falsch mit Javadoc Referenz? –
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. –
@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