通信对等方发送了一个 uint64_t 数据字段,它带有我需要存储到不支持无符号整数类型的 Postgresql-11 数据库中的订单 ID。虽然实际数据可能超过 2^63,但我认为INT8
Postgresql11 中的一个文件可以容纳它,如果我仔细进行一些转换。
假设有:
uint64_t order_id = 123; // received
int64_t to_db; // to be writed into db
我计划使用以下方法之一将 uint64_t 值转换为 int64_t 值:
to_db = order_id;
// 直接赋值;to_db = (int64_t)order_id;
//c 风格的强制转换;to_db = static_cast<int64_t>(order_id);
to_db = *reinterpret_cast<const int64_t*>( &order_id );
当我需要从数据库加载它时,我可以进行反向转换。
我知道它们都可以工作,我只是对哪个最符合 C++ 标准感兴趣。
换句话说,哪种方法在任何编译器的任何 64 位平台上始终有效?
谢谢!!!