开发者

C++: How do I store a 256 bit number, and how do I convert it to hex?

ints only go to 32 bits, longs to 64bits... so.. what do you do when you are work开发者_开发技巧ing with a much larger number?

Also, how easy would it be to switch between the binary representation and the hex representation?


Use an array. For example:

// 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]);


ints only go to 32 bits, longs to 64bits... so.. what do you do when you are working with a much larger number?

You use large number libraries.

Also, how easy would it be to switch between the binary representation and the hex representation?

I don't understand the question. A number's a number's a number. Are you asking how to print a number in an certain base? You can format output when using streams like so:

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


Consider using GMP Arithmetic Library.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜