当前位置: 首页 > 面试题库 >

Java 如何将字节数组转换为双精度并返回?

慕容灿
2023-03-14
问题内容

为了将字节数组转换为双精度型,我发现了这一点:

//convert 8 byte array to double
int start=0;//???
int i = 0;
    int len = 8;
    int cnt = 0;
    byte[] tmp = new byte[len];
    for (i = start; i < (start + len); i++) {
        tmp[cnt] = arr[i];
        //System.out.println(java.lang.Byte.toString(arr[i]) + " " + i);
        cnt++;
    }
    long accum = 0;
    i = 0;
    for ( int shiftBy = 0; shiftBy < 64; shiftBy += 8 ) {
        accum |= ( (long)( tmp[i] & 0xff ) ) << shiftBy;
        i++;
    }

        return Double.longBitsToDouble(accum);

但是我找不到将双精度型转换为字节数组的任何东西。


问题答案:

甚至更简单

import java.nio.ByteBuffer;

public static byte[] toByteArray(double value) {
    byte[] bytes = new byte[8];
    ByteBuffer.wrap(bytes).putDouble(value);
    return bytes;
}

public static double toDouble(byte[] bytes) {
    return ByteBuffer.wrap(bytes).getDouble();
}


 类似资料:
  • 我想把双精度数字转换为十进制。 例如,我有23.43,双倍值是(使用matlab):174 71 255 122 20 110 55 64现在有了这个,我怎么写一个java程序给我23.43? 下面是matlab中双精度的计算: 1的51到0的分数f

  • 问题内容: 我有一个浮点数组,我想将其转换为Java中的双精度数组。我知道迭代数组并创建一个新数组的明显方法。我希望Java在希望与double []一起工作的地方能够平稳地消化float [] …,但不能与此一起工作。进行这种转换的优雅,有效的方法是什么? 问题答案: 基本上 , 必须进行每个值的转换。两种数组类型之间没有隐式转换,因为在JITting之后用于处理它们的代码将有所不同- 它们具有

  • 我想有一个浮子阵列(双打) 然后我有一个返回最大值的函数 我在将基元数据类型转换为集合时遇到问题。我尝试将其转换为双列表,尝试将myArr转换为char / String来检查一些事情,但显然没有任何效果。 我一直看到原始数据类型的编译错误。我也尝试了< code>Double,但是没有成功。 我怎么可能将数组转换为集合

  • 问题内容: 我有一个双,其值是10,000,000.00(千万)。我必须将其转换为。当使用该方法时,我会得到 “ 1.0E7”,它遵循规范是正确的。不幸的是,我需要“ 10,000,000.00”(或等价的语言,具体取决于语言环境)。 如何做到这一点? 问题答案: 尝试之一 NumberFormat http://java.sun.com/javase/6/docs/api/java/text/N

  • 问题内容: 我有一个字符串数组为: 所有的字符串值都是数字。数据应转换为。 问题 Java是否有单行解决方案来实现这一目标,或者我们需要循环并将每个值转换为Double? 问题答案: 创建一个使用循环实现该方法的方法,然后调用您的方法,您将获得单行解决方案。 Java API中没有内置方法可以做到这一点。

  • 问题内容: 我正在尝试对.3gpp音频文件执行快速傅立叶变换。该文件包含来自电话麦克风的44100kHz的5秒钟小录音。 出于显而易见的原因,我可以找到的每个Java FFT算法都只接受double [],float []或Complex []输入,但是我以字节数组的形式读取音频文件,因此我有点困惑我从这里去哪里。我唯一能找到的是上一个问题的答案: Android音频FFT使用音频记录检索特定频率