[英]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.