Как я могу прочитать 64-битное значение с плавающей запятой 1504642224.94664
из шестнадцатеричного C2 95 3C 2C C1 6B D6 41
, используя Java?Я перепробовал каждое предложение, которое нашел в Интернете, и, похоже, ничего не возвращает ожидаемое значение.
В настоящее время я использую Netty 4.1.24.Final
для своего кода ввода-вывода, и я бы предпочел решение как таковое.Я также использую плавающие значения для хранения значения, но я гибко отношусь к последнему типу.
ByteBuf buffer = Unpooled.copiedBuffer( IO.decodeHex( "C2953C2CC16BD641" ) );
buffer.readBytes( 8 ).order( ByteOrder.LITTLE_ENDIAN ).readFloat()
Когда-то это решение работало, но загадочным образом оно перестало работать после обновления Java и Netty - возможно, оно никогда не работало иЯ просто забыл.Кроме того, Нетти устарел метод order()
в пользу readFloatLE()
, который также не работает.
Как вы можете видеть;Я заставил Bless Hex Editor отображать правильное значение, поэтому должно быть решение.Бонусные баллы: Каково было бы обратное решение записать это значение обратно в 64-битное число с плавающей запятой?