java.nio.BufferUnderflowException während der Konvertierung byte array zu verdoppeln
Ich brauchen, um zu konvertieren ein bytearray zu verdoppeln. Ich bin mit
double dvalue = ByteBuffer.wrap(value).getDouble();
Aber bei der Spielzeit bin ich immer BufferUnderflowException Ausnahme
Exception in thread "main" java.nio.BufferUnderflowException
at java.nio.Buffer.nextGetIndex(Buffer.java:498)
at java.nio.HeapByteBuffer.getDouble(HeapByteBuffer.java:508)
at Myclass.main(Myclass.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
Was muss ich hier ändern?
- können Sie uns zeigen, Wert-Deklaration ? mit dem code.
Du musst angemeldet sein, um einen Kommentar abzugeben.
ByteBuffer#getDouble()
wirftSo
value
enthalten muss weniger als 8 bytes. Eindouble
ist eine 64-bit -, 8 Byte Daten, Typ.Ihren code so etwas wie dieses :
Wenn es ist, dann sollte es funktionieren.
Und zeigen Sie uns Ihre Daten
value
array.aus der oracle -docs :
Um es zu beheben, müssen Sie sicherstellen, dass die
ByteBuffer
hat genug Daten, um zu Lesen, ein Doppelzimmer(8 bytes)
.Aussehen Hier's einen einfachen code, um zu zeigen, was Sie wollen mit input-Daten und output.