我用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