ASCII

时间:2016-03-09 18:28:51

标签: java math decimal ascii

我正在从文件中读取一个数字,我想将其转换为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字符?

2 个答案:

答案 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