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

二进制与任意字符转换程序代码

2009-05-20 23:07 218 查看
写这个小程序的时候我主要考虑了以下几点:
1、作为工具类,静态方法比较好一点,Java类库中util中就有很多是静态的工具。
2、原程序没有充分利用到Java类库,有冗余。自己编写的代码越多,bug的几率越大!
3、异常处理是健壮的代码不可少的。输入一堆0、1很容易出错,而且万一分隔符分得不恰当呢?
4、在大量字符串连接时,String创建了大量的无用的中间String,其开销是指数增长d俄。而用StringBuffer,其开销是线性增长的。
5、用for/each循环代替for。这个代码只是要遍历,和下标无关,用for/each更好一点。

备注:StringTokenizer类可以实现字符串分析,但是StringTokenizer是出于兼容性的原因而被保留的遗留类。建议所有寻求此功能的人使用 String 的 split方法或 java.util.regex 包,中国自学编程网,www.zxbc.cn 。
public class StrBinaryTurn {
//将字符串转换成二进制字符串,以空格相隔
public String toBinary(String str){
char[] strChar = str.toCharArray();
String result = "";
for(int i = 0; i < strChar.length; i++){
result += Integer.toBinaryString(strChar) + " ";
}
return result;
}
//将二进制字符串转换成Unicode字符串
public String toStr(String binStr){
String[] tempStr = StrToStrArray(binStr);
char[] tempChar = new char[tempStr.length];
for(int i = 0; i < tempStr.length; i++){
tempChar = toChar(tempStr);
}
return String.valueOf(tempChar);
}
//将二进制字符串转换为char
private char toChar(String binStr){
int[] temp = binStrToIntArray(binStr);
int sum = 0;
for(int i = 0; i < temp.length; i++){
sum += temp[temp.length - 1 - i] << i;
}
return (char)sum;
}
//将初始二进制字符串转换成字符串数组,以空格相隔
private String[] StrToStrArray(String str){
return str.split(" ");
}
//将二进制字符串转换成int数组
private int[] binStrToIntArray(String binStr){
char[] temp = binStr.toCharArray();
int[] result = new int[temp.length];
for(int i = 0; i < temp.length; i++){
result = temp - 48;
}
return result;
}
public static void main(String[] args){
StrBinaryTurn cTob = new StrBinaryTurn();
System.out.println(cTob.toBinary("橘子,好吃!aaa"));
System.out.println();
System.out.println(cTob.toBinary("999111"));
System.out.println();
System.out.println(cTob.toBinary("What a nice day!"));
System.out.println();
System.out.println(cTob.toBinary("^@^ - -! ()★"));
System.out.println();
System.out.println();
System.out.println(cTob.toStr("110101001011000 101101101010000 " +
"1111111100001100 101100101111101 " +
"101010000000011 1111111100000001 " + [Page]
"1100001 1100001 1100001 "));
System.out.println(cTob.toStr("111001 111001 111001 " +
"110001 110001 110001"));
System.out.println(cTob.toStr("1010111 1101000 1100001 " +
"1110100 100000 1100001 100000 1101110 " +
"1101001 1100011 1100101 100000 1100100 " +
"1100001 1111001 100001 "));
System.out.println(cTob.toStr("1011110 1000000 1011110 " +
"100000 101101 100000 101101 100001 100000 " +
"1111111100001000 1111111100001001 10011000000101 "));
}
}
输出结果:
110101001011000 101101101010000 1111111100001100 101100101111101 101010000000011 1111111100000001 1100001 1100001 1100001
111001 111001 111001 110001 110001 110001
1010111 1101000 1100001 1110100 100000 1100001 100000 1101110 1101001 1100011 1100101 100000 1100100 1100001 1111001 100001
1011110 1000000 1011110 100000 101101 100000 101101 100001 100000 1111111100001000 1111111100001001 10011000000101
橘子,好吃!aaa
999111
What a nice day!
^@^ - -! ()★
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string java 工具 class 编程
相关文章推荐