您的位置:首页 > 编程语言 > Java开发

java把字符串转化为二进制,再把二进制转换成字符串的一个小例子

2009-05-24 19:28 387 查看
前几天在csdn看到有人问类似的问题,当时没有时间帮他解决出来。最近抽空写了一个小例子,希望对他能有所帮助。

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class Test03 {

public static void main(String[] args) {
String string="ab 中国";
FileWriter fw = null;
BufferedReader fr = null;
try {
fw = new FileWriter("C://a.txt");
byte[] byts = string.getBytes();
for(int i=0;i<byts.length;i++)
{
fw.write(getBit(byts[i]));
}
fw.close();
fr = new BufferedReader(new FileReader("C://a.txt"));
fw = new FileWriter("C://b.txt");
char[] cbuf = new char[8];
int len = -1;
while(-1!=(len=fr.read(cbuf)))
{
if(cbuf[0]=='0')
{
byte[] bt = new byte[1];
bt[0] = Byte.parseByte(String.valueOf(cbuf), 2);
fw.write(new String(bt));
}
if(cbuf[0]=='1')
{
byte[] bt = new byte[2];
bt[0] = (byte) (-((Integer.parseInt(String.valueOf(cbuf), 2)^0xFF)+1));
if((8==(len=fr.read(cbuf)))&&cbuf[0]=='1')
bt[1] = (byte) (-((Integer.parseInt(String.valueOf(cbuf), 2)^0xFF)+1));
fw.write(new String(bt));
}

}
fr.close();
fw.close();

} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch(IOException e)
{
e.printStackTrace();
}
finally{
try {
fr.close();
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}
public static String getBit(int b)
{
String result="";
if(b>0)
{

result=Integer.toBinaryString(b);
result=("00000000".substring(result.length())).concat(result);
}
else if(b==0)
{
result="00000000";
}
else
{
result=(Integer.toBinaryString(b)).substring(24);
}
return result;
}

}

注:1. 本代码中只适用于把中文字符解析为两个字节,英文字符解析为一个字节的中文编解码方式。如果使用其它的编码方式,请进行相应的变化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: