2016-01-01 2 views
1

После долгих поисков, я не могу найти то, что я ищуПреобразование длиной в строку и строку долго в Java

У меня есть 2 вопроса, как:

String str = "Hello" 

Теперь я хочу его значение в длинном

072101108108111L

где Ascii

072 = Н

101 = е

108 = л

108 = л

111 = о

делает Hello.

Как это сделать, а затем преобразовать его в строку?

Например, если у меня есть длинное значение

072101108108111L 

то как я могу получить обратно строку «Hello» в Java?

здесь, где я нахожусь:

я могу получить строку долго, как этот

String str = "Hello"; 

StringBuilder sb = new StringBuilder(); 
for (char c : str.toCharArray()) 
    sb.append((int)c); 
    BigInteger mInt = new BigInteger(sb.toString()); 
    String valu = mIn.tostring(); 

но значение 72 для "H"; Я хочу, чтобы это было 072, чтобы результат был 3 символа, так что он подходит для функции, чтобы преобразовать обратно в String.

Любая помощь плз

+3

Добро пожаловать на сайт, и счастливого Нового Года! Пожалуйста, предоставьте код для вашей последней попытки решить эту проблему самостоятельно, даже если ваш код не работает. – dasblinkenlight

+0

Что вы пробовали?Кроме того, если это всегда будет 3 цифры на букву, вы можете просто разбить строку каждые 3 символа, выровнять «L» и преобразовать ASCII в символы. – Arc676

+0

Следуйте по этой ссылке: http://stackoverflow.com/questions/1854924/javaconvert-cast-long-to-string – technerd

ответ

1
private static String longToString(String string) { 
    StringBuffer sb = new StringBuffer(); 
    for (int i = 0; i < string.length(); i = i + 3) { 
     String substring = string.substring(i, i + 3); 
     char ch = (char) Integer.parseInt(substring); 
     sb.append(ch); 
    } 
    return sb.toString(); 
} 

private static String stringToLong(String string) { 
    StringBuffer sb = new StringBuffer(); 
    for (int i = 0; i < string.length(); ++i) { 
     int ch = (int) string.charAt(i); 
     if (ch < 100) { 
      if(ch<10) 
      { 
      sb.append('0'); 
      } 
      sb.append('0').append(ch); 
     } else { 
      sb.append(ch); 
     } 
    } 
    return sb.toString(); 
} 
+0

Здесь нет причин использовать StringBuffer, поскольку он синхронизирован, а StringBuilder - нет. – WalterM

+1

Вы также можете проверить 'ch <10', так как вам нужно добавить два' 00' в этом случае. – Clashsoft

2

Позвольте мне дать вам намек о том, как начать.

Мы можем получить значение символа ascii с помощью цикла for и добавить его в строку.

for(int i = 0; i < s.length(); ++i) 
{ 
    int ch = (int)s.charAt(i); 
    System.out.println(ch); 
} 

Prints 
72 
101 
108 
108 
111 

Теперь вы хотите добавить ноль, если оно меньше, чем 100

StringBuilder ans = new StringBuilder(); 
for(...){ 
... 
if(ch < 100){ 
ans.append("0).append(ch); 
} 
} 

Попробуйте использовать саму строку, а не долго.

String longValue = "072101108108111"; 

Теперь вы знаете, что каждая буква представлена ​​в виде 3 символов, разбивает ее на 3 символа.

for(int i = 0; i < s.length; i += 3) 
{ 
    int ch = Integer.parseInt(s.substring(i, i + 3));//get the integer representation of the character 
    System.out.println((char)ch); 
} 
+0

о длинном значении для строки назад –

+0

Я боюсь, что это будет проблемой. Попробуйте создать длинное число с 0 в начале, потому что каждый символ представляет 3 символа. Или слово, которое имеет более 7 букв (превышает длинный предел). Попробуйте использовать сам String, а не длинный. 'String longValue =" 072101108108111 ";'. Это облегчает процесс. –

+0

Можете ли вы привести мне пример с longvalue в строке bro? –