java 求助二进制ascii码转换问题?
下面代码binToAscii("100100001110010000011001000001")运行结果是CAA;是对的;如果是这个的怎么办101010100100001110101001000001100100000110101010就是在原来的突然多了几个0怎么解决;想要的结果还是CAA;求高手;谢谢各位
是有规律的,就是CAA之间都是10;但是每个字符前面的10是一个整体;比如c就是10C(1001000011)然后C和A之间可能有很多10;也可能没有,就是说每个字符之间可能有很多10;也可能没有;但是每个字符前带有一个10;因为10和字符看成一个整天;
就比如101010100100001110101001000001100100000110101010;这个数据转换之后是CAA;你看怎么搞呀;哥们;代码不知道怎么写
哥们你看每次到最后一个10;就可以把01000011转换成c;其他也是一样;这样可以搞出来吗;可是代码不知道该如何下手;这个该怎么写呀
public static void main(String[] args) {
System.out.println("abcdef".substring(2));
System.out.println(binToAscii("100100001110010000011001000001"));
}
static String binToAscii(String bin) {
return bin.length() > 31 ? bta(bin) : bta(Integer.parseInt(bin, 2));
}
static String bta(int ib) {
String ret = "";
while(ib != 0) {
// 低8位转char
ret = (char) (ib & 0xff) + ret;
// 右移10位,8位+10,高位补0
ib = ib >>> 10;
}
return ret;
}
static String bta(String bin) {
String ret = "";
while(bin.length() >= 10) {
String obin = bin.substring(bin.length() - 8, bin.length());
ret = (char)Integer.parseInt(obin, 2) + ret;
bin = bin.substring(0, bin.length() - 10);
}
// 到这里表示二进制码串并不是10的倍数
// 这里最后的高位直接转换为char
// 若:是舍掉高位0的情况,没加10的情况用下面的方法
// 若加10,且舍掉高位0的用
if(bin.length() != 0) {
ret = (char)Integer.parseInt(bin, 2) + ret;
}
return ret;
} 二进制 ascii java 数据 string --------------------编程问答--------------------
补充:Java , Java相关