gpt4 book ai didi

javascript - 将两个 32 位整数转换为一个带符号的 64 位整数字符串

转载 作者:搜寻专家 更新时间:2023-10-31 22:52:48 26 4
gpt4 key购买 nike

我有一个 64 位无符号整数需要在 PostgreSQL 中表示。我将其分解为两个 32 位无符号整数,highlow。为了让 Postgres 接受它,我需要将 highlow 转换为表示带符号的 64 位整数的字符串。

如何将两个 32 位无符号整数转换为以十进制形式表示一个带符号的 64 位整数的字符串?

最佳答案

我已经在 J​​avascript 中以一种快速的'n'dirty-but-works'n'fast 方式完成了这个:Int64HighLowToFromString ,采用53位尾数 double 运算和32位位运算,专门用于十进制输入/输出。

function Int64HiLoToString(hi,lo){
hi>>>=0;lo>>>=0;
var sign="";
if(hi&0x80000000){
sign="-";
lo=(0x100000000-lo)>>>0;
hi=0xffffffff-hi+ +(lo===0);
}
var dhi=~~(hi/0x5af4),dhirem=hi%0x5af4;
var dlo=dhirem*0x100000000+dhi*0xef85c000+lo;
dhi += ~~(dlo/0x5af3107a4000);
dlo%=0x5af3107a4000;
var slo=""+dlo;
if(dhi){
slo="000000000000000000".slice(0,14-slo.length)+dlo;
return sign+dhi+slo;
}else{
return sign+slo;
}
}

很可能这就是您所需要的。

关于javascript - 将两个 32 位整数转换为一个带符号的 64 位整数字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20403544/

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