
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;谢谢各位;求高手;谢谢 展开
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;谢谢各位;求高手;谢谢 展开
展开全部
帮你改写一下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;
}
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后面的数据;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询