gpt4 book ai didi

java - 转换为 byte[] 和 String.getBytes

转载 作者:行者123 更新时间:2023-12-04 05:26:44 29 4
gpt4 key购买 nike

作为练习的一部分,我必须编写一个远程类加载器。它从服务器下载一个类,然后使用defineClass 加载它。

我所做的是这样的:

in=new ObjectInputStream(s.getInputStream());
Object o = in.readObject();
return defineClass(className,o.toString().getBytes(), 0, o.toString().length());

我得到了一个 java.lang.ClassFormatError: Incompatible magic value
但是当我写这个
in=new ObjectInputStream(s.getInputStream());
byte[] classData=(byte[])in.readObject();
return defineClass(className,classData, 0, classData.length);

它按预期工作。

这是为什么?

最佳答案

Object.toString()字符串返回 human readable form of Object因此,如果您调用 toStringarray对象然后它会返回你default toString .

默认 toString 实现是

public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

你可以清楚地看到这不是你想要的。

您可以使用 String Charset 的构造函数或要转换的默认字符集 byte[]串起来
byte[] utf8Bytes = original.getBytes("UTF8");
String roundTrip = new String(utf8Bytes, "UTF8");

引用:
  • Byte Encodings and Strings
  • String JavaDoc
  • 关于java - 转换为 byte[] 和 String.getBytes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13126734/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com