簡體   English   中英

我希望能夠根據ASCII十進制表將數字轉換為文本

[英]I want to be able to convert numbers into text according to the ASCII decimal table

我試圖做到這一點,以便我可以將單個的三個字符的子字符串轉換為整數,條件是字符串的長度是三的倍數。 應當將分割后的子字符串轉換成的整數用作包含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;

在其他情況下,該方法應采用String的前兩個字符並將其初始化為變量i。 在這種情況下,變量mess被初始化為索引為i-32的ASCII數組中的字符。 然后是一個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;

由於某種原因,該方法無法正常工作,我想知道自己是否做錯了什么。 我知道如何獲取輸入String並將其轉換為一系列數字,但是我也想做相反的事情。 無論如何,您可以提供幫助嗎?

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

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"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM