JAVA把ASCII码转变为字符串
这个是处理函数publicstaticStringascii2String(StringASCIIs){String[]ASCIIss=ASCIIs.split(",")...
这个是处理函数
public static String ascii2String(String ASCIIs) {
String[] ASCIIss = ASCIIs.split(",");
StringBuffer sb = new StringBuffer();
for (int i = 0; i < ASCIIss.length; i++) {
sb.append((char) ascii2Char(Integer.parseInt(ASCIIss[i])));
}
return sb.toString();
}
这个是主函数
public static void main(String[] args){
String output="1041011081123210910133";
System.out.println("output="+output);
String op=new String();
op=ascii2String(output);
System.out.println("op="+op);
}
为什么控制台老是说
Exception in thread "main" java.lang.NumberFormatException: For input string: "1041011081123210910133"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at ascii.ascii2String(ascii.java:59)
at ascii.main(ascii.java:108)
我该如何修改啊!!!要哭了都! 展开
public static String ascii2String(String ASCIIs) {
String[] ASCIIss = ASCIIs.split(",");
StringBuffer sb = new StringBuffer();
for (int i = 0; i < ASCIIss.length; i++) {
sb.append((char) ascii2Char(Integer.parseInt(ASCIIss[i])));
}
return sb.toString();
}
这个是主函数
public static void main(String[] args){
String output="1041011081123210910133";
System.out.println("output="+output);
String op=new String();
op=ascii2String(output);
System.out.println("op="+op);
}
为什么控制台老是说
Exception in thread "main" java.lang.NumberFormatException: For input string: "1041011081123210910133"
at java.lang.NumberFormatException.forInputString(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at ascii.ascii2String(ascii.java:59)
at ascii.main(ascii.java:108)
我该如何修改啊!!!要哭了都! 展开
5个回答
展开全部
public class TTTTT {
public static void main(String[] args) {
String string = "1041011081123210910133";
System.out.println(asciiToString(string));
}
public static String asciiToString(String text) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
if (text.charAt(i) <= '2' && i <= text.length() - 3) {
int code = Integer.parseInt(text.substring(i, i + 3));
builder.append((char) code);
i += 2;
} else {
int code = Integer.parseInt(text.substring(i, i + 2));
builder.append((char) code);
i += 1;
}
}
return builder.toString();
}
}
你这编码很怪啊,结果竟然是help me!
1041011081123210910133
解析起来很麻烦那,不是3位3位的。
104
101
108
112
32
109
101
33
追问
哈哈,被你发现了。。。
追答
public class TTTTT {
public static void main(String[] args) {
String string = "1041011081123210910133";
System.out.println(asciiToString(string));
}
public static String asciiToString(String text) {
StringBuilder builder = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
if (text.charAt(i) == '1' && i < text.length() - 2) {
int code = Integer.parseInt(text.substring(i, i + 3));
builder.append((char) code);
i += 2;
} else if (i < text.length() - 1) {
int code = Integer.parseInt(text.substring(i, i + 2));
builder.append((char) code);
i += 1;
}
}
return builder.toString();
}
}
最终版,你原先的程序是超过Integer的取值范围了,关键是逻辑也不对。
还请采纳!
展开全部
sb.append((char) ascii2Char(Integer.parseInt(ASCIIss[i]))); 是怎么定义的??
你看看,你把你传入的参数分段了,ASCIIss = ASCIIs.split(",");
因为你传入的String output="1041011081123210910133" 没有",",所以,最终的ASCIIss.length=1; ASCIIss[0]="1041011081123210910133"。
然后你用这个字符串,转换为int,可能是超出了int的取值范围了,所以出错
你看看,你把你传入的参数分段了,ASCIIss = ASCIIs.split(",");
因为你传入的String output="1041011081123210910133" 没有",",所以,最终的ASCIIss.length=1; ASCIIss[0]="1041011081123210910133"。
然后你用这个字符串,转换为int,可能是超出了int的取值范围了,所以出错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
电饭锅等他一会法国恢复
追问
一会英国恢复行不行= =
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-09-13
展开全部
你进来的是纯数字的string,为什么要用split(",")呢?这样无意义吧
更多追问追答
追问
这是一部分代码。output是将字符串变成的ascii码。现在要变回去。。
追答
你的output是十进制的ASCII码值?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把这个方法也贴上来 ascii2Char
追问
public static char ascii2Char(int ASCII) {
return (char) ASCII;
}
public static int char2ASCII(char c) {
return (int) c;
}
追答
public static void main(String[] args) {
String output = "1041,0110,8112,3210,9101,33";
System.out.println("output=" + output);
String op = new String();
op = ascii2String(output);
System.out.println("op=" + op);
}
输出结果:op=Бn???!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询