当前位置: 首页 > 面试题库 >

如何在不更改的情况下将String转换为字节?

唐海阳
2023-03-14
问题内容

我需要一个解决方案将String转换为字节数组,而无需像这样更改:

输入:

 String s="Test";

输出:

String s="Test";
byte[] b="Test";

当我使用

s.getBytes();

那么回复是

"[B@428b76b8"

但我希望回复是

"Test"

问题答案:

您应始终确保序列化和反序列化使用相同的字符集,这会将字符映射到字节序列,反之亦然。默认情况下,String.getBytes()和新的String(bytes)使用默认字符集,该字符集可能是特定于语言环境的。

使用getBytes(Charset)重载

byte[] bytes = s.getBytes(Charset.forName("UTF-8"));

使用新的String(bytes,Charset)构造函数

String andBackAgain = new String(bytes, Charset.forName("UTF-8"));

此外,Java 7还添加了java.nio.charset.StandardCharsets类,因此您不再需要使用躲闪的String常量。

byte[] bytes = s.getBytes(StandardCharsets.UTF_8);
String andBackAgain = new String(bytes, StandardCharsets.UTF_8);


 类似资料:
  • 问题内容: 我有个问题。我正在尝试将一些字符串转换为日期,但我不知道日期到达的格式。 这或许让他们或等。 如何将这些字符串转换为Date?我尝试了这个: 但是,当我打印出someDate时,它的打印方式是这样的:2019-08-05 12:42:48.638 CEST这意味着,但是当我运行以上代码时,日期对象现在变成了,至少可以这样说。 有什么想法可以正确格式化日期格式吗? 问题答案: 你不能!

  • 问题内容: 尝试如下 输出:12.0 但我想获得12.00的精度 请让我知道正确的方法,而不在字符串类中使用format()方法 问题答案: 使用而不是双重: 之所以有效,是因为保持了“精度”,构造函数将其设置为从右边的数字开始,并在中使用它。因此,如果仅将其丢弃,它就会打印出来。

  • 我在用org。乔达。时间LocalDate和LocalDateTime。我从外部源获得一个Unix时间戳,并希望从中生成一个LocalDate(时间)。关键是,在该外部系统的界面中定义,所有日期/时间都在UTC时区内。因此,我希望避免从该时间戳到本地系统的任何默认时区的任何隐式转换,这可能与UTC不同。有一个LocalDateTime的构造器用于这些事情,所以我尝试(作为一个例子): 结果让我有点

  • 问题内容: 我正在从数据库中获取UTC时间戳,这是我设置为JodaTime 实例的时间 它完美地存储了时间,但带有本地时区。例如,我处于IST时区,即UTC的+5:30 我尝试了很多更改时区的方法,但每件事都会通过使用+5:30时差将时间从其他时间更改为其他时间 有什么方法可以更改TimeZone而不影响当前时间 编辑:如果我当前时间是: 以下是我使用这个的结果 以下是当我使用它的结果; 问题答案

  • 需要将字符数组转换为int而不使用parseInt和String。valueOf(), 我们需要实现这个方法 例如,如果输入数据是