如何在java中将BigInteger转换为String

2022-09-01 09:43:33

我按如下方式将 a 转换为:StringBigInteger

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()

为什么?错误在哪里,我该怎么办?


答案 1

你想使用 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[])


答案 2

使用 或 。String.valueOf 使用 toString() 但对 null 安全。m.toString()String.valueOf(m)