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

写这个小程序的时候我主要考虑了以下几点: 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! ^@^ - -! ()★
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值