【问题标题】:C++ BigInteger to byte arrayC++ BigInteger 到字节数组
【发布时间】:2017-02-23 13:13:43
【问题描述】:

在Java中,有一个BigInteger类来使用大数,它有一个转换函数:toByteInteger,像这样:

private static final BigInteger N = new BigInteger(HEX_N, 16);
...
byte[] digest = messageDigest.digest(N.toByteArray());

在 C++ 中,我尝试Boost.Multiprecision 使用带有 mpz_int 的大数类型,但它没有任何将 mpz_int 转换为 字节数组。

C++ 中是否有任何等效的 BigInteger 类型?我正在使用 qt 框架,qt 上是否有任何大整数结构?是否可以将其转换为字节数组?

【问题讨论】:

标签: c++ arrays qt boost boost-multiprecision


【解决方案1】:

不知道任何特定的功能,但以下两种情况都可以将 cpp_int 转换为字节数组!!!

unsigned char cSHA[33], *xzh;
cpp_int ichA;
ichA = g[0];

//CONVERSION USING BINARY MATHS

for (int i = 32; i>= 1; i--)
{
    // este cast pode dar problemas em UBUNTU
    cSHA[i] = (unsigned char)(ichA & 255);
    ichA = ichA/256;
}

// OR   
//CONVERSION USING POINTER
xzh = ((unsigned char*) &ichA) + 32;

for (int i = 32; i>= 1; i--)
{
    cSHA[i] = *(xzh - i);
}

【讨论】:

    猜你喜欢
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多