導航:首頁 > 編程語言 > 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文件轉二進制相關的資料

熱點內容
做程序員好難 瀏覽:240
晚年程序員的生活 瀏覽:411
安卓什麼型號可以用兩年不卡 瀏覽:188
安卓怎麼一邊玩游戲一邊打電話 瀏覽:282
體育綜合分的演算法 瀏覽:599
用友客戶端連伺服器P地址 瀏覽:525
程序員小工具有哪些 瀏覽:850
android難用 瀏覽:253
2021金磚論壇數據演算法盛宴 瀏覽:744
職校學計算機出來可以當程序員嗎 瀏覽:478
androidxml命名 瀏覽:85
批命令if 瀏覽:101
手機桌面出現安卓圖標怎麼辦 瀏覽:965
php網站生成app 瀏覽:731
食色app怎麼沒法下載了 瀏覽:324
蘋果12跟安卓如何隔空投送 瀏覽:593
如何在濟南人社app上看到賬號 瀏覽:180
伺服器ps燈亮是什麼原因 瀏覽:593
安卓上的導航如何操作 瀏覽:437
程序員如何成長 瀏覽:497