gpt4 book ai didi

javascript - 将XOR函数添加到bigint库

转载 作者:行者123 更新时间:2023-12-01 07:46:37 24 4
gpt4 key购买 nike

我正在使用Java的Big Integer库:http://www.leemon.com/crypto/BigInt.js和我需要能够对两个bigInts进行XOR,遗憾的是该库不包含此类功能。该库相对简单,因此我不认为这是一项艰巨的任务,只是令人困惑。

我一直在尝试一起破解,但运气不佳,如果有人可以帮助我,将不胜感激。这就是我尝试过的(可能是错误的)。但是我猜它的结构将与那里的其他功能非常相似。

function xor(x, y)
{
var c, k, i;
var result = new Array(0); // big int for result

k=x.length>y.length ? x.length : y.length; // array length of the larger num

// Make sure result is the correct array size? maybe:
result = expand(result, k); // ?

for (c=0, i=0; i < k; i++)
{
// Do some xor here
}

// return the bigint xor result
return result;
}

令我感到困惑的是,我不太了解它如何将数字存储在bigInt的数组块中。我不认为这仅仅是bigintC [i] = bigintA [i] ^ bigintB [i]的情况,那么大多数其他函数最后都有一些我不理解的屏蔽操作。我真的很感谢您能帮上忙。

谢谢

最佳答案

看来js在每个数组元素的bpe位中存储了一个int。

看这个:

//convert the integer t into a bigInt with at least the given number of bits.
//the returned array stores the bigInt in bpe-bit chunks, little endian (buff[0] is least significant word)
//Pad the array with leading zeros so that it has at least minSize elements.
//There will always be at least one leading 0 element.
function int2bigInt(t,bits,minSize) {
var i,k;
k=Math.ceil(bits/bpe)+1;
k=minSize>k ? minSize : k;
buff=new Array(k);
copyInt_(buff,t);
return buff;
}

以及文件顶部的注释:
// This code defines a bigInt library for arbitrary-precision integers.
// A bigInt is an array of integers storing the value in chunks of bpe bits,
// little endian (buff[0] is the least significant word).

因此,遍历数组,对每个数组元素的bpe位进行按位XOR应该可以工作。

但是,如果bigints为负数,则可能需要小心一点,因为表示形式为2s补码。

关于javascript - 将XOR函数添加到bigint库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3007822/

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