java求助一个二进制转ASCII码问题

publicstaticvoidmain(String[]args){System.out.println("abcdef".substring(2));System.o... 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);
}
if(bin.length() != 0) {
ret = (char)Integer.parseInt(bin, 2) + ret;
}
return ret;
}
上面代码binToAscii("100100001110010000011001000001")运行结果是CAA;是对的;如果是这个的怎么办000001001000011001001000001100100000100000 就是在原来的突然多了几个0怎么解决;想要的结果还是CAA;谢谢各位;求高手;谢谢
展开
 我来答
百度网友6f87babd4
2013-09-13 · TA获得超过1395个赞
知道小有建树答主
回答量:948
采纳率:50%
帮助的人:429万
展开全部
帮你改写一下bta函数

static String bta(String bin) {
//加上以下三句,把前面的0去掉
int startIndex = 0;
for (int i = 0; i < bin.length() && bin.charAt(i) == '0'; i++, startIndex++)
;
bin = bin.substring(startIndex);

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);
}
if (bin.length() != 0) {
ret = (char) Integer.parseInt(bin, 2) + ret;
}
return ret;
}
追问
000001001000011000001001000001100100000100000
哥们把前面的0不行呀;就算把的0去掉也不行呀;比如说10C(01000011)与10A之间加几个0就不行了;哥们你看看这个000001001000011000001001000001100100000100000这么搞成CAA;就是先判断一个10;如果有10就开始把后面的数据转码;之后再判断10后面的数据;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式