5
回答
求助java ASCII码的问题
终于搞明白,存储TCO原来是这样算的>>>   

下面代码binToAscii("100100001110010000011001000001")运行结果是CAA;是对的;如果是这个的怎么办000001001000011001001000001100100000100000   就是在原来的突然多了几个0怎么解决;想要的结果还是CAA;求高手;谢谢各位


 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;              
          }
<无标签>
举报
weng4570
发帖于4年前 5回/171阅
共有5个答案 最后回答: 4年前
前后的0长度如果固定的话,就直接截取成你要的那样,如果不固定的话,就要找到规则了
--- 共有 3 条评论 ---
weng4570回复 @weng4570 : 哥们你看每次到最后一个10;就可以把01000011转换成c;其他也是一样;这样可以搞出来吗;可是代码不知道该如何下手;哥们怎么写呀 4年前 回复
weng4570就比如101010100100001110101001000001100100000110101010;这个数据转换之后是CAA;你看怎么搞呀;哥们;代码不知道怎么写 4年前 回复
weng4570是有规律的10100001100100100000111010101010000011010;就是CAA之间都是10;但是每个字符前面的10是一个整体;比如c就是10C(1001000011)然后C和A之间可能有很多10;也可能没有,就是说每个字符之间可能有很多10;也可能没有;但是每个字符前带有一个10;因为10和字符看成一个整天; 4年前 回复
没明白这是什么规则
--- 共有 3 条评论 ---
weng4570哥们还有就是每个字符前面都有一个10比如c就是10C(1001000011)然后C和A之间可能有很多1;也可能没有,就是说每个字符(指的是1001000011这个;前面有10的)之间可能有很多1;也可能没有; 4年前 回复
weng4570哥们刚才给你讲错了;其实是这样的;上面程序这个100100001110010000011001000001是可以换成成CAA的;现在就是这样一串数据1111100100001111111100100000110010000011111;意思是多了一些“1”;该怎么搞呀; 4年前 回复
weng4570我是意思是可不可以判断有10之后就可以转换后面的8位二进制数转换了;但是我这样想的;但不知道怎么写;哥们你可以看有其他好的办法没;哥们你看代码如何写呀 4年前 回复
要确定多个几个1 ,是固定就这么多这个吗,还有就是你这个字符串的部长度固定吗,如果是固定长度的话,你就按位截取就行了
--- 共有 2 条评论 ---
weng4570求代码怎么写呀;我是新手不知道怎么下手 4年前 回复
weng4570都不是固定了;字符串会很多;那上面写了三个是测试一次;加入的1也不是固定的 4年前 回复
顶部