C ++:如何存储256位数字,如何将其转换为十六进制?

时间:2011-03-17 19:17:21

标签: c++

整数只有32位,长到64位...... 那么......当你使用更大的数字时,你会怎么做?

另外,在二进制表示和十六进制表示之间切换有多容易?

3 个答案:

答案 0 :(得分:9)

使用数组。例如:

// Declare a structure containing an array of 4 64-bit integers
struct uint256_t
{
    uint64_t bits[4];
};

// Then, to convert to hex:
uint256_t x;
char hexstring[65];  // needs to be at least 64 hex digits + 1 for the null terminator
sprintf(hexstring, "%016llx%016llx%016llx%016llx", x.bits[0], x.bits[1], x.bits[2], x.bits[3]);

答案 1 :(得分:3)

  

整数只有32位,长到64位...所以...当你使用更大的数字时你会怎么做?

您使用large number libraries.

  

另外,在二进制表示和十六进制表示之间切换有多容易?

我不明白这个问题。一个数字是数字的数字。您是否在询问如何打印某个基数的数字?您可以在使用这样的流时格式化输出:

int x = 100;

cout << x << endl; // print decimal value
cout << oct << x << endl; // print octal value
cout << hex << x << endl; // print hexadecimal value

100
0144
0x64

答案 2 :(得分:0)

考虑使用GMP算术库。