gpt4 book ai didi

ruby - 使用 ruby​​ 将存储为有符号的无符号整数转换回原始值

转载 作者:数据小太阳 更新时间:2023-10-29 08:18:01 24 4
gpt4 key购买 nike

C 程序将它认为是 64 位无符号整数的内容放入 Postgres 数据库中类型为 int8 的列中。对于 Postgres,int8 始终是“signed int8”(没有“unsigned int8”之类的东西)。所以我的 Ruby 程序在该空间的上半部分显示从 Postgres 检索到的数字为负数。

在 Ruby 中,获取 -ve 整数并将其转换为 C 程序员想要的 64 位无符号整数的正确方法是什么?

最佳答案

我不确定 Ruby 的具体细节,但基本上如果数字为负数,您需要添加 2^64。这是假设数字存储为 2 的补码,几乎可以肯定是这样。

仅供引用,2 的补码系统,本质上它将一个(比如说)32 位数字视为一个 mod 2^32 的数字。这意味着 -1 与 2^32 - 1 或 0xFFFFFFFF 相同。事实证明,这在硬件级别上使用起来非常简单。

关于ruby - 使用 ruby​​ 将存储为有符号的无符号整数转换回原始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/301259/

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