我有一个整数文字格式0x75f17d6b3588f843b13dea7c9c324e51
。有没有一种方法可以避免编译器语法错误“整数文字太大而无法用任何整数类型表示”?
因为我知道我可以使用这些类型的类型(我正在uint128_t
EOS库中使用,如果我手动插入它,它将起作用)。
有什么办法可以在运行时将此字符串直接解析为完全相同的整数吗?
标准不要求使用128位整数文字,因此要允许它们取决于实现。大多数不需要,所以您需要将其分解为两个64位组件,并使用按位运算符将它们组合起来:
__uint128_t num = ((__uint128_t)0x75f17d6b3588f843 << 64) | 0xb13dea7c9c324e51;
一个好的编译器应该在编译时执行这些操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句