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;
}
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位操作系统?保存指令高低位变了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。