Java 读取二进制文件 ,读八个字节,然后转换成一个double,怎么写? 我知道怎么读四个字节转成int的。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java 读取二进制文件 ,读八个字节,然后转换成一个double,怎么写? 我知道怎么读四个字节转成int的。相关的知识,希望对你有一定的参考价值。
读四个字节,然后转int;
public int readBigInt(InputStream in)throws IOException
int ch1 = in.read();
int ch2 = in.read();
int ch3 = in.read();
int ch4 = in.read();
if ((ch1 | ch2 | ch3 | ch4) < 0)
throw new EOFException();
return ((ch1 << 24) + (ch2 << 16) + (ch3 << 8) + (ch4 << 0));
请大神指点,帮我写个读八个字节,然后转double的方法。 移位操作实在不熟啊。
public double readDouble(InputStream in) throws IOException
byte[] tmp = new byte[8 * 8];//8个字节长度
if (in != null && (in.read(tmp) != -1))
String str = new String(tmp);
return Double.valueOf(str);
return -1;
追问
为什么是byte[8*8]?
好的,你的方法我试一下。另外,你会不会用移位的方法来转Double? 就像我上面的用移位的方法来转Int。
哦,不好意思,我写错了
基本数据类型double占用8个字节,应该是
public double readDouble(InputStream in) throws IOException
byte[] tmp = new byte[8];//8个字节长度
if (in != null && (in.read(tmp) != -1))
String str = new String(tmp);
return Double.valueOf(str);
return -1;
不会用移位的方法转换,java有封装好的算法,为什么要自己写呢?还有,如果自己写的话,那么多种类型转换,每个都要去实现一遍吗?没必要
亲测方法无效。。报错了亲。。
首先,你要确保你传过来的是二进制输入流,然后还要确保你的输入流里面的内容是可以转化为double类型的,我是根据你提供的两个条件写的代码,我自己测试过,是对的
追问你把你写的测试代码我看看。
追答import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
public class TestMain
public static void main(String[] args) throws IOException
TestMain test = new TestMain();
double value = 12111113.11111;
//将double类型数据转成二进制数据
String str_value = Long.toBinaryString(Double.doubleToRawLongBits(value));
InputStream in = new ByteArrayInputStream(str_value.getBytes());
try
double v = test.readDouble(in);
System.out.println(v);
finally
in.close();
private double readDouble(InputStream in) throws IOException
//1个double的二进制字节码有64位
byte[] tmp = new byte[8 * 8];
int read = 0;
if (in != null && ((read = in.read(tmp)) != -1))
String str_value = new String(tmp, 0, read);
return Double.longBitsToDouble(Long.parseLong(str_value, 2));
return -1;
public double readBigInt(InputStream in)throws IOException
int ch=0;
double d=0;
for(int i=8;i>0;i--)
ch=in.read();
if(ch<0)
throw new EOFException();
d=d+(ch<<8*(i-1));
return d;
本回答被提问者采纳
java里怎样把文件转换成二进制
不知道javaweb工程里怎么把文件转换成二进制,哪位大神能指教下吗 谢谢了
转换文件成为二进制数据并保存的Java代码:
取出数据并还原文件到本地的java代码:
[java] view plain copy//读取数据库二进制文件
public void readerJpg() throws SQLException
connection=connectionManager.getconn();//自己连接自己的数据库
String sqlString="select images from save_image where id=4";//从数据库中读出要还原文件的二进制码,这里我读的是自己的数据库id为4的文件
File file=new File("E:\\\\1.jpg");//本地生成的文件
if(!file.exists())
try
file.createNewFile();
catch (Exception e)
e.printStackTrace();
try
byte[] Buffer = new byte[4096*5];
statement=connection.prepareStatement(sqlString);
resultSet = statement.executeQuery();
if(resultSet.next())
FileOutputStream outputStream = new FileOutputStream(file);
InputStream iStream = resultSet.getBinaryStream("images");//去字段用getBinaryStream()
int size=0;
while((size=iStream.read(Buffer))!=-1)
System.out.println(size);
outputStream.write(Buffer,0,size);
catch (Exception e)
e.printStackTrace();
参考技术A
java里把文件转换成二进制的步骤如下:
1、在Eclipse中新建一个Java工程,在此工程中新建一个Java类;
2、在新建的Java类中利用FileInputStream和ByteArrayOutputStream来读取指定文件的内容,并转换成二进制;
3、具体实现代码如下:
public static byte[] getFileToByte(File file)byte[] by = new byte[(int) file.length()];
try
InputStream is = new FileInputStream(file);
ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
byte[] bb = new byte[2048];
int ch;
ch = is.read(bb);
while (ch != -1)
bytestream.write(bb, 0, ch);
ch = is.read(bb);
by = bytestream.toByteArray();
catch (Exception ex)
ex.printStackTrace();
return by;
参考技术B try
File file=new File("D:\\1.jpg");//要转换的文件
FileInputStream inputStream=new FileInputStream(file);
String sql="insert into save_image(images) values(?)";//存入数据库的SQL语句在执行的时候一定要用prepareStatement
statement=connection.prepareStatement(sql);
statement.setBinaryStream(1, inputStream,(int)file.length());
statement.executeUpdate();
catch (FileNotFoundException e)
// TODO Auto-generated catch block
e.printStackTrace();
catch (SQLException e)
// TODO Auto-generated catch block
e.printStackTrace();
参考技术C inputStream 读取进来就是二进制呀 参考技术D 你的意思是将文件转化成流的形式是吧?可以这么做,先通过本类来得到类的加载器,然后在通过类的加载器来把文件作为流加载进来:FileInputStream input = this.getClass().getClassLoader().getResourceAsStream("文件名称");
以上是关于Java 读取二进制文件 ,读八个字节,然后转换成一个double,怎么写? 我知道怎么读四个字节转成int的。的主要内容,如果未能解决你的问题,请参考以下文章
java中怎样将视频文件转换成二进制文件再转换回视频文件?求具体代码!