我用C++c + +转换大数为十六进制
我做了一个在线转换大批这个值的
DECIMAL: 3712299789313814843
我想将其转换为十六进制,我意识到了
hexadecimal value is 3384BCFD61CEB13B
我在网上发现了一些解决方案,我尝试转换,但它给我这个:
string hex_value(int decimal)
{
static const string hex_digits("ABCDEF");
string hex;
int scratch = decimal;
while (scratch != 0)
{
hex += hex_digits[scratch % 16];
scratch /= 16;
}
reverse(hex.begin(), hex.end());
return hex;
}
input= hex_value(atoi(buffer.c_str()));
HEXA: 61CEB13B
我觉得整数太小,在数据发送..我用NTL,即ZZ类,但我不知道如何在这种情况下使用它..
任何人都可以指导我如何转换这大数变成十六进制..
谢谢!!
有什么不对的64位整数? (a.k.a'int64_t'?) – qdii 2013-05-11 17:24:35
从技术上来说,没有什么是错的64位int为OP指定的号码,但OP实际上即使在运行相当接近的与64号位的限制。无符号的64位int可以指望高达1.8 * 10^19。 OP处理的数量是3.7 * 10^18。作为溢出是一个数量级之内,OP会很好地去大的INT大小的情况下,他/她必须面对更大的数字。 – 2to1mux 2013-05-12 00:03:17