gpt4 book ai didi

java - 将 char[] 转换为 byte[] 时如何定义编码(例如 UTF-16)?

转载 作者:行者123 更新时间:2023-12-04 05:43:33 25 4
gpt4 key购买 nike

我得到了以下代码,它将 char[] 转换为 byte[]:

char[] cPwd = {'p', 'a', 's', 's', 'w', 'o', 'r', 'd'};
byte[] bPwd = new byte[cPwd.length * 2];
ByteBuffer.wrap(bPwd).asCharBuffer().put(cPwd);

我猜上面的代码将使用默认平台编码(我想是 UTF-8 或 16)。对吗?

我如何确保上面 char[] 中的字符使用特定的编码,比如 UTF-16,而不是依赖于默认的平台编码?

ps - 在我的场景中有一个约束:我不允许将此 char[] 转换为像 in
String str = new String(cPwd, "UTF-16");

提前谢谢你。

亚历克斯。

最佳答案

到 VM 看到它们时,您在代码中指定为文字的字符将是 16 位 Unicode 字符。 asCharBuffer() 方法未指定为执行任何编码。换句话说,您应该有效地获得 UTF-16,小端或大端取决于 ByteBuffer 的字节序。

如果您想要另一种编码而不通过 String 构造函数,您可以使用 CharSet.encode() 方法:

        CharBuffer cb = CharBuffer.wrap(your chars);
Charset cs = Charset.forName("UTF-8");
ByteBuffer bb = cs.encode(cb);

关于java - 将 char[] 转换为 byte[] 时如何定义编码(例如 UTF-16)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10973998/

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