Как преобразовать BigInteger для Строкового представления в Java

Я преобразовал a String кому: BigInteger следующим образом:

Scanner sc=new Scanner(System.in);
System.out.println("enter the message");
String msg=sc.next();
byte[] bytemsg=msg.getBytes();
BigInteger m=new BigInteger(bytemsg); 

Теперь я хочу свою строку назад. Я использую m.toString() но это дает мне желаемый результат.

Почему? Где ошибка и что я могу делать с этим?

29
задан Cœur 20 May 2018 в 17:10
поделиться

5 ответов

Вы хотите использовать BigInteger.toByteArray ()

String msg = "Hello there!";
BigInteger bi = new BigInteger(msg.getBytes());
System.out.println(new String(bi.toByteArray())); // prints "Hello there!"

Насколько я понимаю, вы выполняете следующие преобразования:

  String  -----------------> byte[] ------------------> BigInteger
          String.getBytes()         BigInteger(byte[])

И вам нужно обратное:

  BigInteger ------------------------> byte[] ------------------> String
             BigInteger.toByteArray()          String(byte[])

​​Обратите внимание, что вы, вероятно, захотите использовать перегрузки String.getBytes () и String (byte []) , которые задают явную кодировку, иначе вы можете столкнуться с проблемами кодирования.

26
ответ дан 28 November 2019 в 01:35
поделиться

Почему бы вам не использовать конструктор BigInteger(String)? Таким образом, обход через toString() должен работать нормально.

(обратите также внимание, что ваше преобразование в байты не указывает явно кодировку символов и зависит от платформы - это может быть источником проблем в дальнейшем)

8
ответ дан 28 November 2019 в 01:35
поделиться

Используйте m.toString() или String.valueOf(m). String.valueOf использует toString(), но безопасен для нуля.

7
ответ дан 28 November 2019 в 01:35
поделиться

http://java.sun.com/j2se/1.3/docs/api/java/lang/Object.html

каждый объект имеет метод toString () в Джава.

0
ответ дан 28 November 2019 в 01:35
поделиться

Чтобы перевернуть

byte[] bytemsg=msg.getBytes(); 

, вы можете использовать

String text = new String(bytemsg); 

, используя BigInteger, просто все усложняет, на самом деле непонятно, зачем вам нужен байт []. Что планируете делать с BigInteger или byte []? В чем суть?

1
ответ дан 28 November 2019 в 01:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: