【问题标题】:I want to be able to convert numbers into text according to the ASCII decimal table我希望能够根据 ASCII 十进制表将数字转换为文本
【发布时间】:2011-11-26 23:25:17
【问题描述】:

我正在尝试这样做,以便在字符串的长度是三的倍数的条件下,我可以获取单独的三个字符的子字符串并将它们转换为整数。分割子字符串转换成的整数应该作为一个数组中的相对位置,该数组包含 ASCII 表的所有打印字符。

 String IntMessage = result.toString();
   if 
   {
   (IntMessage.substring(0,1)=="1" && IntMessage.length()%3==0)
       for(j=0;j < IntMessage.length()-2;j += 3)
           n = Integer.parseInt(IntMessage.substring(j,j+3));
           mess += ASCII[n-32];
       return mess;

在其他情况下,该方法应获取字符串的前两个字符并将它们初始化为变量 i。在这种情况下,变量 mess 被初始化为 ASCII 数组中索引为 i-32 的字符。然后是一个 for 循环,将剩余的字符分割成三位数的子字符串,然后根据它们在 ASCII 数组中的对应位置将它们取出并转换为字符串。该数组中的 String 变量不断添加到变量 mess 中,以便将 IntMessage 字符串的 BigInteger 转换为 String。

   int i = Integer.parseInt(IntMessage.substring(0,2));

   mess=ASCII[i-32];
           for(l=2; l< IntMessage.length() - 2; l+=3)
               r = Integer.parseInt(IntMessage.substring(l,l+3));
               mess+=ASCII[r-32];
   return mess;

由于某种原因,该方法不起作用,我想知道我是否做错了什么。我知道如何获取输入字符串并将其转换为一系列数字,但我也想做相反的事情。有什么可以帮忙的吗?

【问题讨论】:

  • 您能否提供示例输入和输出以及您的方法目前做错了什么。
  • 抱歉,我无法理解您要完成的工作,因此可能其他潜在的发帖人也同样感到困惑。也许如果你举了一些例子,或者可以澄清目标。
  • Stirng "daa" 应返回 100097097,因此结果等于 100097097。IntMessage = "100097097"。我要做的是将 String IntMessage 划分为单独的三位数子字符串。 String mess 是一个空字符串,它采用从 100 开始的 IntMessage 的三位子字符串。该方法连接 ASCII [(100)-32],即 ASCII [68],即“d”。然后变量 j 加 3 并转到下一个子字符串“097”,然后将子字符串转换为整数 n。因此该方法返回 ASCII [65],即“a”,依此类推。

标签: java string parseint


【解决方案1】:

根据您的描述,您可以使用以下方法:

String fromIntMessage(String msg) {
    StringBuilder result = new StringBuilder();
    for (int x = (msg.length() % 3 - 3) % 3; x < msg.length(); x += 3) {
        int chr = Integer.parseInt(msg.substring(Math.max(x, 0), x + 3));
        result.append(Character.toString((char) (chr - 32)));
    }
    return result.toString();
}

String toIntMessage(String string) {
    StringBuilder result = new StringBuilder();
    for (char c : string.toCharArray()) {
        result.append(String.format("%03d", c + 32));
    }
    return result.charAt(0) == '0' ? result.substring(1) : result.toString();
}

这会给你

toIntMessage("DAA")             // => "100097097"
fromIntMessage("100097097")     // => "DAA"

【讨论】:

    猜你喜欢
    • 2010-12-03
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 2011-11-21
    • 2015-01-31
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    相关资源
    最近更新 更多