【问题标题】:converting a string to integer and integer to string in java在java中将字符串转换为整数和整数到字符串
【发布时间】:2016-12-11 11:46:42
【问题描述】:

我正在尝试将字符串转换为整数字符串表示形式,然后再将其转换回来 我会详细解释需求

假设我有一个密码字符串“abc”,我想将其转换为每个字符“097098099”的ascii值字符串 然后稍后我想将其转换回字符串“abc”

在 c 中,这可以使用 sprintf 和 scanf 轻松完成,但在 Java 中我很困惑。 谢谢。

【问题讨论】:

  • 你在困惑什么?你有没有查过如何在那里和回来转换?
  • 您可以通过强制转换转换 int 中的每个字符并将它们连接成一个字符串
  • 您的问题使我提出以下问题:“为什么?!”。这也让我恳请您分享一些您已经实现的代码以及您遇到的具体问题。
  • @RohanKhude 他不是要求将字符串转换为 int,而是将每个 ASCII 字符转换为它的 int 表示形式

标签: java string integer ascii


【解决方案1】:

将较大的问题分解为较小的问题。单独解决每个较小的问题,然后将小解决方案组合成整个问题的大解决方案。

在这种情况下,我可以看到两个需要解决的小问题:

  1. 将单个 ASCII 字符转换为其整数表示形式。

  2. 将整数表示组合到整个字符串中

这个有功课的感觉,所以我就不给你写程序了,不过我会帮你写一些伪代码:

myString <- "abc"
newString <- ""

for each character thisChar in myString
  // Here "&" is the string concatenation operator
  newString <- newString & convertToInteger(thisChar)
endfor

return newString

这不是 Java,您应该在 Java 版本中使用一些特定于 Java 的调整。如果你自己找到它们,你会更好地学习它们。您可以从查看 StringBuilder 类的 Javadocs 开始。

【讨论】:

    【解决方案2】:

    使用此方法将源字符串转换为 Ascii 表示:

    public static void main(String[] args) {
        String source = "abc";
        String dest = convertToAsciiString(source);
        System.out.println(dest);
    }
    
    public static String convertToAsciiString(String source) {
        String dest = "";
        int index = 0;
        while (index < source.length()) {
            char c = source.charAt(index);
            int charAscii = c;
            dest += (charAscii >=100 ?charAscii : "0" + charAscii);
            index++;
        }
        return dest;
    }
    

    【讨论】:

    • 发问者似乎想要 ASCII 的三位数表示:'a' -> 097,而不是 97,在他的示例中。
    【解决方案3】:

    您可以这样做,这是将 ASCII 字符串转换为 int 表示的方法,按照此示例,您可以自己编写 reverse 方法,以另一种方式进行转换。

    public static String convertToIntString(String str) {
        StringBuilder builder = new StringBuilder(str.length() * 3);
        str.chars().map(c -> (int)c).forEach(i -> builder.append((Integer.toString(i).length() == 2 ? Integer.toString(i).length() == 1 ? "00" : "0" : "") + i));
        return builder.toString();
    }
    

    forEach(...)里面的代码是为了确保char是用三位数字写的( 097而不是97

    请注意我编写的代码使用 Java Stream API,因此只有在您安装了 Java 8 时才能使用。

    【讨论】:

    • 谢谢 aleb2000,这正是我正在寻找的解决方案
    猜你喜欢
    • 1970-01-01
    • 2012-02-21
    • 2010-12-31
    相关资源
    最近更新 更多