因为我试图将以下十六进制转换为java字符串。 因为这是UTF8字符。
ЫЙБПАРО
此字符串转换为十六进制42b41941141f41042041e
值。
我尝试使用以下javascript代码将字符串转换为十六进制
function encode(string) {
var str= "";
var length = string.length;
for (var i = 0; i < length; i++){
str+= string.charCodeAt(i).toString(16);
}
return str;
}
我需要在java代码中解码会是什么样的方式。
尝试以下答案
mkyong.com/java/how-to-convert-hex-to-ascii-in-java
stackoverflow.com/questions/140131
Convert a string representation of a hex dump to a byte array using Java?
答案 0 :(得分:1)
您可以尝试Apache Codec。
byte[] b= Hex.decodeHex(yourhexdecimalstring.toCharArray());
System.out.println(new String(b, "UTF8"));
答案 1 :(得分:1)
让我们从第一个字符开始:这是Unicode表中的#1067。
这意味着4 x 256 + 43.因此,十六进制表示为04和2B(反之亦然,具体取决于字节顺序)。你的似乎是42 b4。所以我假设编码不正确。
我不熟悉jscript,但这段代码......
private void jscript() throws ScriptException {
ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.eval("function encode(string) {\n"
+ " var str= \"\";\n"
+ " var length = string.length; \n"
+ " for (var i = 0; i < length; i++){\n"
+ " str+= string.charCodeAt(i).toString(16);\n"
+ " }\n"
+ " return str;\n"
+ "}"
+ ""
+ "print(encode(\"ЫЙБПАРО\"));");
}
...返回此
42b41941141f41042041e
正如你写的那样。但在我看来,这是不正确的