导航:首页 > 编程语言 > java文件转二进制

java文件转二进制

发布时间:2024-08-27 06:53:43

java 16进制字符串转为二进制bit数组

应该用byte型数组
public static String stringToHexString(String strPart) {
String hexString = "";
for (int i = 0; i < strPart.length(); i++) {
int ch = (int) strPart.charAt(i);
String strHex = Integer.toHexString(ch);
hexString = hexString + strHex;
}
return hexString;
}

private static String hexString="0123456789ABCDEF";
/*
* 将字符串编码成16进制数字,适用于所有字符(包括中文)
*/
public static String encode(String str)
{
// 根据默认编码获取字节数组
byte[] bytes=str.getBytes();
StringBuilder sb=new StringBuilder(bytes.length*2);
// 将字节数组中每个字节拆解成2位16进制整数
for(int i=0;i<bytes.length;i++)
{
sb.append(hexString.charAt((bytes[i]&0xf0)>>4));
sb.append(hexString.charAt((bytes[i]&0x0f)>>0));
}
return sb.toString();
}

/*
* 将16进制数字解码成字符串,适用于所有字符(包括中文)
*/
public static String decode(String bytes)
{
ByteArrayOutputStream baos=new ByteArrayOutputStream(bytes.length()/2);
// 将每2位16进制整数组装成一个字节
for(int i=0;i<bytes.length();i+=2)
baos.write((hexString.indexOf(bytes.charAt(i))<<4 |hexString.indexOf(bytes.charAt(i+1))));
return new String(baos.toByteArray());
}

private static byte uniteBytes(byte src0, byte src1) {
byte _b0 = Byte.decode("0x" + new String(new byte[] {src0})).byteValue();
_b0 = (byte) (_b0 << 4);
byte _b1 = Byte.decode("0x" + new String(new byte[] {src1})).byteValue();
byte ret = (byte) (_b0 | _b1);
return ret;

public static byte[] HexString2Bytes(String src)
{
byte[] ret = new byte[6];
byte[] tmp = src.getBytes();
for(int i=0; i<6; ++i )
{
ret[i] = uniteBytes(tmp[i*2], tmp[i*2+1]);
}
return ret;
}

㈡ java里怎样把文件转换成二进制

转换文件成为二进制数据并保存的Java代码:

取出数据并还原文件到本地的java代码:

[java]view plain//读取数据库二进制文件

publicvoidreaderJpg()throwsSQLException

{

connection=connectionManager.getconn();//自己连接自己的数据库

StringsqlString="selectimagesfromsave_imagewhereid=4";//从数据库中读出要还原文件的二进制码,这里我读的是自己的数据库id为4的文件

Filefile=newFile("E:\1.jpg");//本地生成的文件

if(!file.exists())

{

try{

file.createNewFile();

}catch(Exceptione){

e.printStackTrace();

}

}

try{

byte[]Buffer=newbyte[4096*5];

statement=connection.prepareStatement(sqlString);

resultSet=statement.executeQuery();

if(resultSet.next())

{

FileOutputStreamoutputStream=newFileOutputStream(file);

InputStreamiStream=resultSet.getBinaryStream("images");//去字段用getBinaryStream()

intsize=0;

while((size=iStream.read(Buffer))!=-1)

{

System.out.println(size);

outputStream.write(Buffer,0,size);

}

}

}catch(Exceptione){

e.printStackTrace();

}

}

㈢ Java中如何把图片转换成二进制流

Java中将图片转为二进制流只需要使用FileImageInputStream取得图片文件,然后使用ByteArrayOutputStream 写入到二进制流中即可,下面是详细代码:


//图片到byte数组
publicbyte[]image2byte(Stringpath){
byte[]data=null;
FileImageInputStreaminput=null;
try{
input=newFileImageInputStream(newFile(path));
ByteArrayOutputStreamoutput=newByteArrayOutputStream();
byte[]buf=newbyte[1024];
intnumBytesRead=0;
while((numBytesRead=input.read(buf))!=-1){
output.write(buf,0,numBytesRead);
}
data=output.toByteArray();
output.close();
input.close();
}
catch(FileNotFoundExceptionex1){
ex1.printStackTrace();
}
catch(IOExceptionex1){
ex1.printStackTrace();
}
returndata;
}

另外,如果需要将byte[]存回图片或转为String,则:

//byte数组到图片
publicvoidbyte2image(byte[]data,Stringpath){
if(data.length<3||path.equals(""))return;
try{
=newFileImageOutputStream(newFile(path));
imageOutput.write(data,0,data.length);
imageOutput.close();
System.out.println("MakePicturesuccess,Pleasefindimagein"+path);
}catch(Exceptionex){
System.out.println("Exception:"+ex);
ex.printStackTrace();
}
}
//byte数组到16进制字符串
publicStringbyte2string(byte[]data){
if(data==null||data.length<=1)return"0x";
if(data.length>200000)return"0x";
StringBuffersb=newStringBuffer();
intbuf[]=newint[data.length];
//byte数组转化成十进制
for(intk=0;k<data.length;k++){
buf[k]=data[k]<0?(data[k]+256):(data[k]);
}
//十进制转化成十六进制
for(intk=0;k<buf.length;k++){
if(buf[k]<16)sb.append("0"+Integer.toHexString(buf[k]));
elsesb.append(Integer.toHexString(buf[k]));
}
return"0x"+sb.toString().toUpperCase();
}

㈣ 用java写一个 十进制转为二进制的程序

将十进制转换成二进制的算法如下:
1.给定一个数;
2.根据十进制转换二进制的思想:把这个数除以2若为单数则为1,为偶数则为0,直到最后一个数为1为止。所以我们要做的就是用你给定的这个数除以2,如果结果为奇数则r=1,否则r=0;如此循环下去,直到这个数〉=1。
3.然后把r的值送到一个数组里面。最后把这个数组里面的内容从后面打印出来就可以了。

import java.util.Scanner;

public class Hi {

public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个十进制需要转换为二进制的正整数");
int n=sc.nextInt();
int r;
int i=0;
int[] a=new int[20];
do{
if(n%2==1)
r=1;
else
r=0;
a[i]=r;
n/=2;
i++;
}while(n>0);

System.out.println("十进制转换为二进制后:");
for(int j=i-1;j>=0;j--){
System.out.print(a[j]);
}
}
}

㈤ java中如何把一个图片转换成二进制流存入到类中啊

1.将Image图像文件存入到数据库中

我们知道数据库里的Image类型的数据是"二进制数据",因此必须将图像文件转换成字节数组才能存入数据库中.

要这里有关数据的操作略写,我将一些代码段写成方法,方便直接调用.

//根据文件名(完全路径)
public byte[] SetImageToByteArray(string fileName)
{
FileStream fs = new FileStream(fileName, FileMode.Open);
int streamLength = (int)fs.Length;
byte[] image = new byte[streamLength];
fs.Read(image, 0, streamLength);
fs.Close();
return image;
}

//另外,在ASP.NET中通过FileUpload控件得到的图像文件可以通过以下方法
public byte[] SetImageToByteArray(FileUpload FileUpload1)
{
Stream stream = FileUpload1.PostedFile.InputStream;
byte[] photo = new byte[FileUpload1.PostedFile.ContentLength];
stream.Read(photo, 0, FileUpload1.PostedFile.ContentLength);
stream.Close();
return photo;
}

2.从SQL Server数据库读取Image类型的数据,并转换成bytes[]或Image图像文件

//要使用SqlDataReader要加载using System.Data.SqlClient命名空间
//将数据库中的Image类型转换成byte[]
public byte[] SetImage(SqlDataReader reader)
{
return (byte[])reader["Image"];//Image为数据库中存放Image类型字段
}

//将byte[]转换成Image图像类型
//加载以下命名空间using System.Drawing;/using System.IO;
using System.Data.SqlClient;*/
public Image SetByteToImage(byte[] mybyte)
{
Image image;
MemoryStream mymemorystream = new MemoryStream(mybyte,0, mybyte.Length);
image = Image.FromStream(mymemorystream);
return image;
}

㈥ java中怎样将视频文件转换成二进制文件再转换回视频文件求具体代码!

其实x.avi本身也是二进制文件,你只需要按照二进制文件读取方式读取就可以了,所以不理解你这里的x.dat又是什么样的?或者是说轮换成文本文件?如果这样的话你将x.avi一个字符一个字符地读取然后用16进制保存到x.dat中即可。
再转换为y.avi时同理,读取x.dat中的两个文本字符,转换成byte再写入y.avi即可。

㈦ JAVA如何把源代码转成二进制数

先说说,汇编几乎和二进制编码(机器码是一一对应的),基本上相当于给每个机器指令起了个名字,增加可读性。

c语言跟汇编的区别相对比较小,基本就是用汇编中的跳转(JMP,JNE等),比较(CMP)等命令来表示控制、分支、循环等结构,把函数转换成标签,用寄存器来存放参数,用栈来保存局部变量等。

C++比c语言多了许多特性,主要是面向对象特性(比如继承,多态,模板等),当然翻译成汇编语言的难度也就更大。

而java和C#并不是直接编译成汇编语言,而是它们专有的中间语言(和汇编比较像,但是优点是与机器无关,可以跨平台,只要在该平台编写了对应的解释器,缺点是速度稍慢)

以上是我的理解,可能并不十分准确,仅供参考。

㈧ 如何用JAVA语言将十六进制数转换成二进制数,并输出急需!

16进制转2进制----实例
publicclassHex2Binary
{
publicstaticvoidmain(String[]args)
{
StringhexString="ABCD";
System.out.println(hexString2binaryString(hexString));
}

(StringhexString)
{
if(hexString==null||hexString.length()%2!=0)
returnnull;
StringbString="",tmp;
for(inti=0;i<hexString.length();i++)
{
tmp="0000"
+Integer.toBinaryString(Integer.parseInt(hexString
.substring(i,i+1),16));
bString+=tmp.substring(tmp.length()-4);
}
returnbString;
}
}

2进制转16进制---实例
publicclassBinary2Hex
{
publicstaticvoidmain(String[]args)
{
StringbString="1010101111001101";
System.out.println(binaryString2hexString(bString));
}

(StringbString)
{
if(bString==null||bString.equals("")||bString.length()%8!=0)
returnnull;
StringBuffertmp=newStringBuffer();
intiTmp=0;
for(inti=0;i<bString.length();i+=4)
{
iTmp=0;
for(intj=0;j<4;j++)
{
iTmp+=Integer.parseInt(bString.substring(i+j,i+j+1))<<(4-j-1);
}
tmp.append(Integer.toHexString(iTmp));
}
returntmp.toString();
}
}

㈨ java中如何将十进制数字转化成二进制

如果表达小于2^31-1的正数代码如下:

public void binaryToDecimal(int n){

int t = 0; //用来记录位数

int bin = 0; //用来记录最后的二进制数

int r = 0; //用来存储余数

while(n != 0){

r = n % 2;

n = n / 2;

bin += r * Math().pow(10,t);

t++;

}

System.out.println(bin);

}

使用字符串的拼接(+)来实现大于2^31-1的数,代码如下:

public void binaryToDecimal(int n){

String str = "";

while(n!=0){

str = n%2+str;

n = n/2;

}

System.out.println(str);

}

可以右移后再与0x01进行&运算得到第一位迟州的数字判断判断它的第几位上是0,第几位上是1,代码如下:

class ByteMove

{

public static void main(String[] args)

{

int i = 7;

move(i);

}

static void move(int num){

for(int i= 0;i<6;i++){

System.out.println("第"+(i+1)+"位:" + (num >> i & 0x01));

}

}

}

阅读全文

与java文件转二进制相关的资料

热点内容
android连接webservice 浏览:221
对于简单的加密和编码方法 浏览:334
XC8编译结果不同 浏览:217
气体隔膜压缩机 浏览:587
新的电脑文件夹打开为什么是空的 浏览:821
制冷压缩机寿命 浏览:734
androidlistview按下颜色 浏览:194
单片机实验报告蜂鸣器 浏览:10
农业量地用什么app 浏览:11
python构造时间 浏览:843
页面加密不能复制 浏览:680
什么app可以看美剧无删美剧 浏览:845
mom解压包下载 浏览:270
什么手机app可以学习数学 浏览:496
pdf文档制作 浏览:781
修改文件夹显示电影图标 浏览:133
王者荣耀视频app叫什么 浏览:900
php判断ip段 浏览:978
gmail服务器怎么收到邮件 浏览:297
sha弱加密算法 浏览:666