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. 本代码中只适用于把中文字符解析为两个字节,英文字符解析为一个字节的中文编解码方式。如果使用其它的编码方式,请进行相应的变化。
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. 本代码中只适用于把中文字符解析为两个字节,英文字符解析为一个字节的中文编解码方式。如果使用其它的编码方式,请进行相应的变化。
相关文章推荐
- C++:通过一个点的数据对象转换成字符串的例子来说明整数转化为字符串
- 将一个浮点数转换成人民币读法字符串(java)
- Java编程题:将一个十六进制的字符串转换成一个十进制的整数
- 在java中怎么把字节数组转换成二进制字符串
- Java中如何得到一个整型数的二进制形式(十进制转化成二进制)
- 【java 面试100】20.输入一个表示整数的字符串,把该字符串转换成整数并输出
- java字符串与二进制的相互转化
- JAVA 字符串与二进制,十六进制 相互转换
- java字符串与二进制的相互转化
- Json对象与Json字符串的转化、JSON字符串与Java对象的转换
- java字符串与二进制的相互转化
- openoffice中一个将java代码转换为c++代码的例子
- 将一个正整数转化为二进制并用字符串表示输出
- 一个Java解析JSON字符串的例子
- java中把一个数字转化为字符串
- java8 利用 stream,lambda 将一个数组转化为字符串String
- Json对象与Json字符串的转化、JSON字符串与Java对象的转换
- java网络图片和二进制字符串间的转换
- java 二进制数据与16进制字符串相互转化
- Java数值转化为二进制、十进制、十六进制字符串