java ascii码转换? 400 报错-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

java ascii码转换? 400 报错

爱吃鱼的程序员 2020-05-30 22:43:39 83

java ascii码转换? 400 报错

@dbtop 你好,想跟你请教个问题:哥们这是你上次帮我解决的一个代码;

  static String regEx = "(10[1|0][1|0][1|0][1|0][1|0][1|0][1|0][1|0])";


    public static void main(String[] args) {


        System.out
   .println(binToAscii("111111001111110111111111111111001001111110010000111111100100000111111111111001000001111111001000010"));
    }


     static String binToAscii(String bin) {
     // TODO Auto-generated method stub
     String ret = "";
     Pattern pat = Pattern.compile(regEx);
     Matcher mat = pat.matcher(bin);
     boolean rs = mat.find();
     int si = 0;
     while (rs) {
     String chars = mat.group(0);
     int nsi = bin.indexOf(chars, si);
     nsi += chars.length();
     rs = mat.find(nsi);
     si = nsi;
     String obin = chars.substring(2);
     ret = ret + (char) Integer.parseInt(obin, 2);
     }
     return ret;
     }

这个ascii码是正确的;可是我现在出现问题了ascii是反的;需要倒过来才能转正确的ascii码;比如A是01000001;可是我的是10000010;需要把红色的倒过来变成绿色的就成了;下面的是倒后来的代码;你看看出什么问题了;就是粉色的是我在你的基础上添加的;黄色的是倒的ascii码;把数据倒过来之后结果应该是三个A;可是运行之后出错了;不知道怎么解决;哥们你再帮我看看;谢谢哥们

 static String regEx = "(10[1|0][1|0][1|0][1|0][1|0][1|0][1|0][1|0])";


    public static void main(String[] args) {

        System.out .println(binToAscii("11111110100000101111101000001011111010000010111111"));
    }
 

 static String binToAscii(String bin) {
     // TODO Auto-generated method stub
     String ret = "";
     Pattern pat = Pattern.compile(regEx);
     Matcher mat = pat.matcher(bin);
     boolean rs = mat.find();
     int si = 0;
     while (rs) {
     String chars = mat.group(0);
     int nsi = bin.indexOf(chars, si);
     nsi += chars.length();
     rs = mat.find(nsi);
     si = nsi;
     String obin = chars.substring(2);     
     StringBuffer sb=new StringBuffer();
     obin=sb.reverse().toString();
     System.out.println(obin);    
     ret = ret + (char) Integer.parseInt(obin, 2);
     }
     return ret;
     }

Java
分享到
取消 提交回答
全部回答(1)
  • 爱吃鱼的程序员
    2020-05-30 22:43:40

    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    
    public class Test2 {
        static String regEx = "(10[1|0]{8})";
        public static void main(String[] args) {
    
    //        System.out.println("abcdef".substring(2));
    //        System.out.println(binToAscii("10100000101111111111001111110111111111111111001001111110010000111111100100000111111111111001000001111111001000010"));
            System.out.println(binToAscii("11111110100000101111101000001011111010000010111111"));
        }
    
        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 = "";
            StringBuffer sb=new StringBuffer(bin);
            bin=sb.reverse().toString();
            System.out.println(bin);
            Pattern pat = Pattern.compile(regEx);
            Matcher mat =  pat.matcher(bin);
            boolean rs = mat.find();
            int si =0;
            while (rs){
                String chars = mat.group(0);
                int nsi = bin.indexOf(chars,si);
                nsi += chars.length();
                rs = mat.find(nsi);
                si = nsi;
                String obin = chars.substring(2);
                StringBuffer sb2=new StringBuffer(obin);
                obin=sb2.reverse().toString();
                System.out.println(obin);
                ret = ret + (char)Integer.parseInt(obin, 2);
            }
    
            return ret;
        }
    }

    ######谢谢哥们;真给力######

    貌似你用了64位操作系统?保存指令高低位变了

    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程