1.txt文本存储的内容转换成二进制字符存储于另一个2.txt文本中
这是我写的将二进制字符再转换成原有字符存储时的代码
不过输出的大部分是乱码,如何改进??????while ((lineStr = br.readLine()) != null)
{
String str[]=lineStr.split(" ");
char[] b=new char[str.length];
for(int i=0;i<str.length;i++)
{
for(int j=0;j<8;j++)
{
if(str[i].length()<8)
{
str[i]="0"+str[i];
}
else
j=8;
}
String one[]=str[i].split("");
int aa=Integer.parseInt(one[1])*2*2*2+Integer.parseInt(one[2])*2*2+Integer.parseInt(one[3])*2+Integer.parseInt(one[4]);
int bb=Integer.parseInt(one[5])*2*2*2+Integer.parseInt(one[6])*2*2+Integer.parseInt(one[7])*2+Integer.parseInt(one[8]);
b[i]=(char)Integer.decode("0x"+String.valueOf(aa)+String.valueOf(bb)).intValue();
}
bw.write(new String(b));
}
这是我写的将二进制字符再转换成原有字符存储时的代码
不过输出的大部分是乱码,如何改进??????while ((lineStr = br.readLine()) != null)
{
String str[]=lineStr.split(" ");
char[] b=new char[str.length];
for(int i=0;i<str.length;i++)
{
for(int j=0;j<8;j++)
{
if(str[i].length()<8)
{
str[i]="0"+str[i];
}
else
j=8;
}
String one[]=str[i].split("");
int aa=Integer.parseInt(one[1])*2*2*2+Integer.parseInt(one[2])*2*2+Integer.parseInt(one[3])*2+Integer.parseInt(one[4]);
int bb=Integer.parseInt(one[5])*2*2*2+Integer.parseInt(one[6])*2*2+Integer.parseInt(one[7])*2+Integer.parseInt(one[8]);
b[i]=(char)Integer.decode("0x"+String.valueOf(aa)+String.valueOf(bb)).intValue();
}
bw.write(new String(b));
}
public static void main(String[] args){
int n=4;
for(int i=31;i>=0;i--){
if((n&(1<<i))==0){
System.out.print('0');
}else{
System.out.print('1');
}
}
System.out.print('\n');
}
LZ看看二进制这样转好就好了,使用移位就好了
final Pattern pattern = Pattern.compile("[10]+");
StringBuffer buff = new StringBuffer();
Matcher m = null;while ((lineStr = br.readLine()) != null) {
buff.delete(0, buff.length());
m = pattern.matcher(lineStr);
while (m.find()) {
int intValue = Integer.parseInt(m.group(), 2);
buff.append((char)intValue);
}
bw.write(buff.toString());
}