如何在boost中手动声明uint512_t?

How to declare manually uint512_t in boost?

我要声明:

uint512_t qwe = 0x5FBFF498AA938CE739B8E022FBAFEF40563F6E6A3472FC2A514C0CE9DAE23B7E;

但 c++ 不这么认为(vscode 也有提示):

integer constant is too large for its type

及其打印形式:

x: 0x514c0ce9dae23b7e

你能帮帮我吗?

您可以使用 user-defined literals to initialize Boost.Multiprecision 个数字,例如:

uint512_t qwe =
     0x5FBFF498AA938CE739B8E022FBAFEF40563F6E6A3472FC2A514C0CE9DAE23B7E_cppui512;

或者,您可以使用构造函数 from string,但这效率较低,因为它需要 运行 时间解析。如果数字不是编译时常量,它会很有用。