我有一个 C 模块,我正在使用 Ruby 测试通过使用这段 C 代码扩展 ruby 来测试它。正在修改 2 ** 24 -1 以上的任何数字。我需要在 Ruby 和 C 之间来回传递 64 位值,它应该是位精确的。任何想法将不胜感激。
in c extension:
long int sig_val;
sig_val = NUM2LL(sig) // sig is type VALUE and is ruby number to be passed on to C
. . . 我传递的数据的几个例子:
- (2^34 -1) * 16 ==> C 接收 (2^34) * 16
- (2^34 +1) * 16 ==> C 接收 (2^34) * 16
- (2^24 +1) * 16 ==> C 接收 (2^24) * 16
- (2^25 -1) ==> C 收到 (2^25)
- (2^24 -1) ==> C 接收 (2^24 -1) (正确)
下面的任何数字也是正确的。
谢谢!