1 致谢

感谢陈玮学长的代码 
由于学习了他的代码 我才最终得出了正确的结论

2 问题描述

今天编程的时候遇到1个问题 需要从一个二进制文件中读取double[]的数据
我们使用的编程语言是Java语言 
经过查阅资料之后发现:Java似乎不能直接通过double[]的指针直接读取数据
∴如果我们想通过使用类似C语言的进行指针操作完成数据读写应该是行不通的 
需要转换其它思路实现这个目标
首先我们来明确一下可以做到的事情 
首先我们把所有的数组数据读入到了一个byte[]数组中 这件事情是可以做到的
代码如下:

File sourceFile = new File(source);
FileInputStream stream = new FileInputStream(source);
DataInputStream dis = new DataInputStream(stream);for (int i = 0; i < bufferSize; i++) {dis.read(buffer, 0, doubleSize);
}
使用DataInputStream的read()方法就可以实现
然后需要我们自己实现一个byte[]转换为double的转换函数
再利用循环一个个放入double[]数组中就可以了
然后经过查阅资料 又获得1个有效信息
就是long类型可以使用函数Double.longBitsToDouble()直接转换为double
所以最终剩下的问题就是如何将byte[]转换为double
总结一下转换函数的需求描述:
输入 —— 长度为8的byte[]
输出 —— 1个long数据

3 算法设计

使用位运算实现
一共有8个byte数据 分别是8个字节数据构成1个long数据
对于每个byte数据 
1.使用“<<”运算将字节移动到相应的位置
2.用“& 0xFF”进行“位清理”

(注意位清理的时候  0xFF同样需要进行相应的移位操作
具体的实现可以参考我的“代码实现”)
3.用“|”操作进行合并
4.重复上述过程

4 代码实现

    /*** 将一个8位字节数组转换为双精度浮点数。<br>* 注意,函数中不会对字节数组长度进行判断,请自行保证传入参数的正确性。* * @param b*            字节数组* @return 双精度浮点数*/public static double bytesToDouble(byte[] b) {return Double.longBitsToDouble(bytesToLong(b));}/*** 将一个8位字节数组转换为长整数。<br>* 注意,函数中不会对字节数组长度进行判断,请自行保证传入参数的正确性。* * @param b*            字节数组* @return 长整数*/public static long bytesToLong(byte[] b) {int doubleSize = 8;long l = 0;for (int i = 0; i < doubleSize; i++) {// 如果不强制转换为long,那么默认会当作int,导致最高32位丢失l |= ((long) b[i] << (8 * i)) & (0xFFL << (8 * i));}return l;}

以上是代码实现 大家可以看看

5 后记

其实百度一下 网上还是有很多byte[]数组转double的方法
但是我还是把自己的方法记录了下来 
因为已经养成了记录的习惯
而且我的方法和网上的方法还是有一些不同 
第一 我是用循环的方法实现的
代码具有更高的可读性
第二 大家课可以看看我的代码实现
是“数据低字节保存在内存的高地址中” ∴使用的是小端方式
而网上的方法大多讲的是“大端方式” 但我觉得这是不够的
因为在C语言中 数组的构造方式使用的就是“小端方式”
∴我将我的实现方法表达出来了 

Java中如何将以byte数组给出的数据转换为double数组形式相关推荐

  1. php excel转数组,php将excel数据转换为3d数组(php convert excel data into 3d array)

    php将excel数据转换为3d数组(php convert excel data into 3d array) 我有一个excel文件,其数据是一个3d数组. 我正在使用PHPExcel Objec ...

  2. 使用图像播放Java中的一种技巧-搜索图像,将图像转换为文本,隐藏数据

    介绍 在本文中,我将为您提供一种处理图像文件的方法. 本文将使您深入了解Java中的一些技巧,以便您可以隐藏图像内的敏感信息,将完整图像隐藏为文本,在目录内搜索特定图像,并最小化图像的大小. 但是,这 ...

  3. Intel Realsense D435 python (Python Wrapper)example00: NumPy Integration 将深度帧数据转换为 Numpy 数组进行处理

    NumPy Integration: Librealsense frames support the buffer protocol. A numpy array can be constructed ...

  4. java基础语法入门到类型转换问题,运算符,数据输入,数组,方法概述,Debug模式,以及10个小案例的详细介绍。

    java基础语法 目录 java基础语法 1. Java概述 1.1 Java语言发展史(了解) 1.2 Java语言跨平台原理(理解) 1.3 JRE和JDK(记忆) 1.4 JDK的下载和安装(应 ...

  5. js数组查找最接近_js查找数组所有符合条件数据 js替换数组中的某个元素

    thinkphp一大堆数据的数组怎么做为条件去查询数据库? 在后台代码中将数组assign出去,然后在模板的js代码中就可以通过{$array}调用啦. 如果我们在Action中赋值了一个name模板 ...

  6. java中的分页 效率考虑_面试官:数据量很大,分页查询很慢,有什么优化方案?...

    当需要从数据库查询的表有上万条记录的时候,一次性查询所有结果会变得很慢,特别是随着数据量的增加特别明显,这时需要使用分页查询.对于数据库分页查询,也有很多种方法和优化的点. 下面简单说一下我知道的一些 ...

  7. python 创建空的numpy数组_真假美猴王-Numpy数据与Python数组的区别与联系

    Numpy,是python中的一个矩阵计算包,功能类似matlab的矩阵计算.Numpy的诞生弥补了下面提到的两项的不足,numpy提供了两种基本的对象:ndarray(N-dimensional a ...

  8. c#将字符串转换为数组,在C#中将字符串转换为字节数组

    先决条件:如何在C#中声明和使用byte []? C#中的字符串到字节数组的转换 在C#中,可以使用Encoding将字符串转换为字节数组.方法,它接受字符串作为参数并返回字节数组.ASCII.Get ...

  9. excel表格中添加combobox_Excel中两个表格对比,找出不同数据

    当你有两个Excel工作簿需要对比数据时候,你该怎么做呢?数据少,我们直接用眼睛就可以看到,数据如果太多,那么对比找出不同数据,是一件非常困难的事情.今天,小汪老师就来教大家几招,可以快速有效的帮助大 ...

最新文章

  1. 三十二、电子商务服务推荐模型构建
  2. 计算机导论的重点,计算机导论重点题目精华版
  3. 主线程中有多个handler的情况
  4. MSSQL 2005数据库与SP4补丁安装
  5. MouseColor | 颜色获取及转换工具
  6. ai python 面试_面试分享系列 | 17道Python面试题,让你在求职中无往不利
  7. Python零基础学习笔记(三十九)—— time
  8. 线性可分支持向量机与硬间隔最大化
  9. ggplot2的中文显示
  10. 大专计算机应用技术毕业生登记表自我鉴定,大专毕业生登记表的自我鉴定(精选5篇)...
  11. Python制作微信小助手
  12. 跟着《SpringInAction》学Spring——入门篇
  13. 贝叶斯统计-0531
  14. VR开发之使用VRTK实现拾取和手柄扣下扳机触发事件(Unity灭火器灭火功能的实现)
  15. 2021-05-12 MongoDB面试题 在MongoDB中如何排序
  16. 计算机电源MOD,模组电源和非模组区别是什么?电脑电源的工作原理是什么?
  17. 将数据库中用户表 名称设置对应的拼音账号sql
  18. android 根目录缓存,Android 文件目录存储介绍 缓存目录 | 私有目录 | 系统根目录 | 用户可见目录...
  19. java到大数据学习路线
  20. CTF 之 Forensics 取证

热门文章

  1. java证书已过期如何继续运行_过期证书上的Java trustmanager行为
  2. Spring Boot Executable jar/war 原理
  3. spring boot 下使用@ConponentScan注解遇到的问题
  4. 数据库优化之mysql【转】
  5. struts2(一) struts2入门
  6. python之列表生成式
  7. JSP中Session的使用
  8. 软件测试中英文词汇对照表
  9. 【Java 系列笔记】语法基础 + Spring + Spring MVC + SpringBoot + 数据结构
  10. Java自动跳转到debug模式的解决方法