java - 将 double 转换为 byte[] 数组

标签 java double arrays

如何在 Java 中将 double 组转换为字节数组?我看了很多其他帖子,但找不到正确的方法。

Input = 65.43 
byte[] size = 6
precision = 2   (this might change based on input)

expected output (byte[]) = 006543

我可以不使用像 doubleToLongBits() 这样的函数吗?

最佳答案

真正的doublebyte[]的转换

double d = 65.43;
byte[] output = new byte[8];
long lng = Double.doubleToLongBits(d);
for(int i = 0; i < 8; i++) output[i] = (byte)((lng >> ((7 - i) * 8)) & 0xff);
//output in hex would be 40,50,5b,85,1e,b8,51,ec

double 到 BCD 转换

double d = 65.43;
byte[b] output = new byte[OUTPUT_LENGTH];
String inputString = Double.toString(d);
inputString = inputString.substring(0, inputString.indexOf(".") + PRECISION);
inputString = inputString.replaceAll(".", "");
if(inputString.length() > OUTPUT_LENGTH) throw new DoubleValueTooLongException();
for(int i = inputString.length() - 1; i >= 0; i--) output[i] = (byte)inputString.charAt(i)
//output in decimal would be 0,0,0,0,6,5,4,3 for PRECISION=2, OUTPUT_LENGTH=8

关于java - 将 double 转换为 byte[] 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13071777/

相关文章:

java - 在 TreeMap 中的特定索引处插入键值对

java - 在 jeditorpane 上显示图像(java swing)

java - 如何获取 Java7 应用程序的 CPU、RAM 和网络使用情况

c++ - 双变量输出 32767 始终代替用户输入

performance - 为什么比较 double 比 uint64 快?

arrays - 零大小数组的分配和在数组构造函数中的使用

java - 在 Java 中查找另一个数组中的数组的最快方法是什么?

java - 释放BufferedReader、InputStreamReader和InputStream获取的资源

css - 如何摆脱第二个滚动条?

java - jtextarea 数组的声明问题