java ascii码转换

weng4570 发布于 2013/09/25 10:48
阅读 2K+
收藏 0

收藏!数据建模最全知识体系解读!>>>

@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;
     }

加载中
0
d
dbtop

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;
    }
}

weng4570
weng4570
谢谢哥们;真给力
0
王瑞平
王瑞平

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

返回顶部
顶部