我需要将java字符串编码为UCS,如'h‘到'0068’
例如:我有一个测试设置
@Test
public void testEncodeAsUCS2_string1() throws Exception {
String encoded = sendRequestTransformer.encodeAsUCS2("hello");
Assert.assertEquals("00680065006C006C006F", encoded);
}所以这个测试让我知道转换是否成功,例如。hello应返回00680065006C006C006F
在我的代码中,我有以下转换,我知道这是错误的,因为它打印[B@742cb491。(类Object的此toString方法返回一个字符串,该字符串由该对象所属类的名称、at符号字符‘@’和该对象的哈希码的无符号十六进制表示形式组成)
我需要帮助来完成转换
String encodeAsUcx2(String messageContent){
try {
messageContent.getBytes("UTF-16LE");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return String.valueOf(messageContent.getBytes());
}我该怎么做呢?
发布于 2015-10-16 03:00:56
在将消息转换为byte[]之后,您只需遍历每个byte并将其转换为十六进制表示,然后构建一个新的String。
例如,您可以这样做:
static String encodeAsUcs2(String messageContent) throws UnsupportedEncodingException {
byte[] bytes = messageContent.getBytes("UTF-16LE");
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(String.format("%02X", b));
}
return sb.toString();
}但是,我应该注意,在编码"hello"时,这将返回"680065006C006C006F00",而不是"00680065006C006C006F"。
要获得预期的输出,需要使用大端编码("UTF-16BE")。
https://stackoverflow.com/questions/33155916
复制相似问题