将Google联系人ID转换为十六进制以在URL中使用

时间:2019-01-29 21:21:06

标签: javascript python hex decimal

Google通讯录现在(2019年1月)为您创建的每个联系人发出一个长(19位)十进制数字ID。

不幸的是,如本question中所述,无法将ID放入URL中以轻松查看联系人,但是,如果将此十进制数字转换为十六进制,则可以将其放入URL中。

所以问题是,如何转换 c2913347583522826972 至 286E4A310F1EEADC

当我使用十进制到十六进制转换器here时,它给了我 286E4A310F1EEADC如果我删除c(下面的第二个功能是站点代码的版本,但它也可能使用PHP)

但是尝试使用Javascript的以下功能会给我带来不同的结果

第一个是最接近这个stack question的位置,距离只有2位数字

function decimalToHexString(number)
{
number = parseFloat(number);
  if (number < 0)
  {
    number = 0xFFFFFFFF + number + 1;
  }

  return number.toString(16);
}

console.log(decimalToHexString('2913347583522826972'));
//output 286e4a310f1eea00

function convertDec(inp,outp) {
    var pd = '';
    
    var output ;
    var input = inp;
    
    for (i=0; i < input.length; i++) {
        var e=input[i].charCodeAt(0);var s = "";
    output+= e + pd;
}
return output;
}
//return 50574951515255535651535050565054575550

很高兴知道您对改善此过程的想法

1 个答案:

答案 0 :(得分:1)

似乎是数字大小的限制。如果需要转换较大的数字,则必须使用数组。

您可以使用hex2dec npm软件包在十六进制和十进制之间进行转换。

>> converter.decToHex("2913347583522826972", { prefix: false }
//286e4a310f1eeadc

Js example

在python方面,您只需完成

dec = 2913347583522826972
// Python implicitly handles prefix
hexa =  hex(dec)
print dec == int(hexa, 16)
// True

Python example

更多信息请看以下要点 https://gist.github.com/agirorn/0e740d012b620968225de58859ccef5c