C 程序将它认为是 64 位无符号整数放入 Postgres 数据库中类型为 int8 的列中。
对于 Postgres,int8 始终是“signed int8”(没有“unsigned int8”这样的东西)。
因此,我的 Ruby 程序将从 Postgres 检索到的数字显示为负数。
在 Ruby 中,获取该 -ve 整数并将其转换为 64 位的正确方法是什么unsignedC 程序员想要的整数?
我不确定 Ruby 的具体情况,但本质上,如果数字为负数,则需要添加 2^64。这是假设该数字存储为 2 的补码,几乎可以肯定是这样。
仅供参考,2 的补码系统本质上是将(比如说)32 位数字视为 mod 2^32 的数字。这意味着 -1 与 2^32 - 1 或 0xFFFFFFFF 相同。事实证明,这在硬件级别上使用起来非常简单。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)