您可以像这样实现convertJavaByteArrayToInt:
function convertJavaByteArrayToInt(bytes) {
var r = 0;
for (var i = 0; i < bytes.length; i++) {
r += (bytes[i] & 0xff) << (8 * i);
}
return r;
}
allocateJavaByteArray很难实现,因为我们无法获得字节类.因此,不可能使用java.lang.reflect.Array.newInstance来创建byte []实例.但这是一个棘手的实现:
function allocateJavaByteArray(n) {
var r = "";
for (var i = 0; i < n; i++) {
r += "0";
}
return new java.lang.String(r).getBytes();
}
更新:似乎上面的代码在FireFox 3.6中不起作用.这是另一个allocateJavaByteArray实现,请尝试:
function allocateJavaByteArray(n) {
var r = new java.io.ByteArrayOutputStream(4);
for (var i = 0; i < n; i++) {
r.write(0);
}
return r.toByteArray();
}