gpt4 book ai didi

javascript - 如何将 BigInt.js 的 Base64 正确转换为 Ruby

转载 作者:行者123 更新时间:2023-11-28 08:27:11 24 4
gpt4 key购买 nike

我正在使用 Leemon Baird 的 BigInt.js (documentation) 来处理大整数。我需要能够从 BigInt 到 Ruby 得到相同的整数。

示例 JS 文件:

var number = "1234567890987654321";
var bigNumber = str2bigInt(number, 10, 80); //10: input = Decimal
var bigNumber64 = bigInt2str(bigNumber, 64); //64: ouput = Base64
console.log(bigNumber64);
//--> 14Y4FInR1on

示例 Ruby 文件:

big_number_64 = '14Y4FInR1on'
big_number = Base64.decode64(big_number_64) #input: Base64: output: decoded string
big_number = big_number.unpack('B*').first #B*: output = Binary
big_number = big_number.to_i(2) #read big_number as binary, output = integer
puts big_number
#--> 26313825004518719100904402231695296969994

我的问题是我需要它相等

1234567890987654321 != 26313825004518719100904402231695296969994

我已经尝试过

big_number = big_number_64.unpack('m*').first.unpack('B*').first

并尝试反转该过程并检查 Base64 == Base64 而不是 Decimal == Decimal,但我似乎仍然无法使它们相等。

请帮忙。

最佳答案

当你通过Ajax传递参数时,它只是一个字符串。您所需要的只是 Ruby 可以理解并转换为整数的格式。

Ruby 可以理解任意长度的整数,因此您可以将其发送为 1234567890987654321 并调用 to_i

如果您有兴趣减少字符串表示形式的长度,可以将其转换为基数 36(Ruby 可以解释的最高基数),如下所示:

JS

var number = "1234567890987654321";
var bigNumber = str2bigInt(number, 10, 80); //10: input = Decimal
var bigNumber36 = bigInt2str(bigNumber, 36); //36: output = Base 36
console.log(bigNumber36);
//---> "9do1sjhjpei9"

ruby

big_number_36 = '9do1sjhjpei9'
big_number = big_number_36.to_i(36)
puts big_number
# => 1234567890987654321

关于javascript - 如何将 BigInt.js 的 Base64 正确转换为 Ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22263175/

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