Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中两个十六进制字符串的异或_Javascript - Fatal编程技术网

JavaScript中两个十六进制字符串的异或

JavaScript中两个十六进制字符串的异或,javascript,Javascript,你知道如何对十六进制值执行异或运算吗?JavaScript中的逐位运算只对数值有效 您应该parseInt(hexString,16)hex字符串。特别是在你的情况下,这是行不通的,因为你的十六进制对于一个数字来说太大了。您必须创建自己定制的XOR函数 请查看此链接: 生成的bytearray将可用于手动异或。逐字节。也许这会有帮助:。您可以使用这样的函数 "*)(" 函数异或(a,b){ 如果(!Buffer.isBuffer(a))a=新缓冲区(a) 如果(!Buffer.isBuffer

你知道如何对十六进制值执行异或运算吗?

JavaScript中的逐位运算只对数值有效

您应该
parseInt(hexString,16)
hex字符串。特别是在你的情况下,这是行不通的,因为你的十六进制对于一个数字来说太大了。您必须创建自己定制的XOR函数

请查看此链接:


生成的bytearray将可用于手动异或。逐字节。也许这会有帮助:。

您可以使用这样的函数

"*)("
函数异或(a,b){ 如果(!Buffer.isBuffer(a))a=新缓冲区(a) 如果(!Buffer.isBuffer(b))b=新缓冲区(b) var res=[] 如果(a.长度>b.长度){ 对于(变量i=0;i
来源:

下面的函数接受两个字符串,如“041234FFFFFFFFFF”和“0000000 709000003”(pin块和卡块的经典示例) 上述两个字符串的预期结果为“041234F8F6FFFFFC”

函数bitwiseXorHexString(pinBlock1、pinBlock2){
var结果=“”
对于(让索引=0;索引<16;索引++){
const temp=(parseInt(pinBlock1.charAt(index),16)^parseInt(pinBlock2.charAt(index,16)).toString(16).toUpperCase()
结果+=温度
}
返回结果
}

注意:这是对固定长度为16的xor 2字符串进行的。您可以根据需要修改它。

是否应该
cli
be
str
?是的,您说得对。我会改变的。谢谢:-)
str = 'abc';
c = '';
key = 'K';
for(i=0; i<str.length; i++) {
    c += String.fromCharCode(str[i].charCodeAt(0).toString(10) ^ key.charCodeAt(0).toString(10)); // XORing with letter 'K'
}
return c;
"*)("
function xor(a, b) {
  if (!Buffer.isBuffer(a)) a = new Buffer(a)
  if (!Buffer.isBuffer(b)) b = new Buffer(b)
  var res = []
  if (a.length > b.length) {
    for (var i = 0; i < b.length; i++) {
       res.push(a[i] ^ b[i])
    }
 } else {
 for (var i = 0; i < a.length; i++) {
   res.push(a[i] ^ b[i])
   }
 }
 return new Buffer(res);
}
function bitwiseXorHexString(pinBlock1, pinBlock2) {
  var result = ''
  for (let index = 0; index < 16; index++) {
    const temp = (parseInt(pinBlock1.charAt(index), 16) ^ parseInt(pinBlock2.charAt(index), 16)).toString(16).toUpperCase()
    result += temp
  }
  return result
}