Javascript vs Java - 字符串编码
Javascript vs Java - String encoding
我正在尝试将以下内容从Java移植到JavaScript:
String key1 = "whatever";
String otherKey = "blah";
String key2;
byte keyBytes[] = key1.getBytes();
for (int i = 0; i < keyBytes.length; i++) {
keyBytes[i] ^= otherKey.charAt(i % otherKey.length());
}
key2 = new String(keyBytes);
这是我写的:
var key1 = "whatever";
var other_key = "blah";
var key2 = "";
for (var i = 0; i < key1.length; ++i)
{
var ch = key1.charCodeAt(i);
ch ^= other_key.charAt(i % other_key.length);
key2 += String.fromCharCode(ch);
}
但是,他们给出了不同的答案。
有什么问题,JavaScript 字符串的编码方式是否不同,我该如何纠正它们?
你忘记了代码上的一个 charCodeAt(),如下所示:
var key1 = "whatever";
var other_key = "blah";
var key2 = "";
for (var i = 0; i < key1.length; ++i)
{
var ch = key1.charCodeAt(i);
ch ^= other_key.charAt(i % other_key.length).charCodeAt(0);
key2 += String.fromCharCode(ch);
}
在java中,在你做^=之前有一个隐式强制转换(字符到字节)操作
我更改了代码以查看java和javascript中的字节数组。运行后结果相同:
Javascript:
function convert(){
var key1 = "whatever";
var other_key = "blah";
var key2 = "";
var byteArray = new Array();
for (var i = 0; i < key1.length; ++i){
var ch = key1.charCodeAt(i);
ch ^= other_key.charAt(i % other_key.length).charCodeAt(0);
byteArray.push(ch);
key2 += String.fromCharCode(ch);
}
alert(byteArray);
}
结果 : 21,4,0,28,7,26,4,26
爪哇岛:
static void convert() {
String key1 = "whatever";
String otherKey = "blah";
String key2;
byte keyBytes[] = key1.getBytes();
for (int i = 0; i < keyBytes.length; i++) {
keyBytes[i] ^= otherKey.charAt(i % otherKey.length());
}
System.out.println(Arrays.toString(keyBytes));
key2 = new String(keyBytes);
}
结果: [21, 4, 0, 28, 7, 26, 4, 26]
相关文章:
- 如何在JavaScript/Node中计算SHA256哈希和Base64字符串编码
- 使用node.js中的windows 1252对字符串进行编码
- 在JavaScript中生成安全、随机、Ascii编码的字符串
- 使用 MVC 删除 JavaScript 中硬编码字符串 Asp.Net 最佳方法
- 需要使用Java编码/转义HTML字符串,并在JavaScript中解码HTML字符串
- 将字符串编码为HEX
- Javascript;php:如何将普通字符串编码为编码的短字符串
- Chrome 扩展字符串编码
- 构造 Blob 时的字符串编码
- 如何即时将字符串编码的 PHP 正则表达式转换为 JS 正则表达式
- Javascript vs Java - 字符串编码
- 调用以字符串编码的 javascript 函数
- 如何直接在 JavaScript 中将字符串编码为 UTF-8
- 有没有跨平台的方法可以将一个字符串编码为另一个没有空格的字符串,然后将其解码回来
- 注意事项将C#字符串编码为Javascript字符串
- 字符串编码html
- 如何在PHP中将Javascript字符串编码为Unicode并将其解码为utf-8
- 为JSON字符串编码HTML
- 在javascript中将字符串编码为utf-16到base64
- 为QRCode生成将字符串编码为小尺寸