我正在从文件中读取一个数字,我想将其转换为ASCII文本字符串。我已经看到了与此有关的问题,但他们都在处理单个十进制等效的ASCII值,如12到ASCII,87到ASCII,112到ASCII等。我需要转换大量的小数,没有空格到ASCII文本。谁能告诉我这是怎么做到的?系统如何确定要翻译的第一个数字是1,12或123? 例如:
int intval = 668976111;
//CONVERSION CODE
System.out.println(newval);
打印" bylo"
如果int 123,我怎么知道我是说1,2,3或12,3或123或1,23等?如何将这样的十进制数转换为Unicode字符?
答案 0 :(得分:0)
这是一个很难的问题,因为ascii代码可以是单个,两个或三个数字长。
现在,如果你的编码只有十进制数字和十进制数字20以上的字符,那就很容易了。
算法如下。遍历数组(数字是数组的一个元素),如果第一个数字是1,则取3个数字,因为你不能有一个代码小于20的字符。如果第一个数字高于20,则只取2数字。
这样你就可以获得正确的解码,假设你没有编码代码小于20的东西,这是一个非常可能的假设,作为第一个"有用的"代码是32号,这是空格
答案 1 :(得分:0)
试试这个。
static void decode(String s, int index, byte[] decode, int size) {
if (index >= s.length())
System.out.println(new String(decode, 0, size));
else
for (int i = index + 1; i <= s.length(); ++i) {
int d = Integer.parseInt(s.substring(index, i));
if (Character.isISOControl(d)) continue;
if (d > 255) break;
decode[size] = (byte)d;
decode(s, i, decode, size + 1);
}
}
static void decode(String s) {
decode(s, 0, new byte[s.length()], 0);
}
和
decode("668976111"); // -> BYLo