gpt4 book ai didi

c++ - 如何安全地将 `unsigned long int` 转换为 `int` ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:05:04 25 4
gpt4 key购买 nike

我有一个应用程序以 unsigned long int 的形式创建唯一的 id。该应用程序需要这种精度。

但是,我必须在只允许 int 的协议(protocol)中发送这些 id。协议(protocol)的接收应用程序不需要这种精度。所以我的问题是:如何将 unsigned long int 转换为 int,尤其是当 unsigned long int 大于 时>整数?

编辑:

协议(protocol)只支持int。我很想知道如何避免“翻车问题”

发送消息的应用程序需要知道很长一段时间内的唯一性,而接收者只需要知道短时间内的唯一性。

最佳答案

这是一种可能的方法:

#include <climits>
unsigned long int uid = ...;
int abbreviated_uid = uid & INT_MAX;

例如,如果 int 是 32 位,这将丢弃 UID 的低位 31 位以外的所有位。它只会产生非负值。

这会丢失原始 uid 的信息,但您表示这不是问题。

但是你的问题很模糊,很难判断这是否符合你的目的。

关于c++ - 如何安全地将 `unsigned long int` 转换为 `int` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11387370/

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