给定一个潜在的巨大整数值(采用C#字符串格式),我希望能够生成其十六进制等效值.普通方法在这里不适用,因为我们正在谈论任意大数,50位或更多.我见过的技术使用了这样的技术:
// Store integer 182
int decValue = 182;
// Convert integer 182 as a hex in a string variable
string hexValue = decValue.ToString("X");
// Convert the hex string back to the number
int decAgain = int.Parse(hexValue, System.Globalization.NumberStyles.HexNumber);
Run Code Online (Sandbox Code Playgroud)
将无法工作,因为要转换的整数太大.
例如,我需要能够像这样转换字符串:
843370923007003347112437570992242323
到十六进制当量.
这些不起作用:
将非常大的n位数转换为十进制表示的复杂性是多少?
我的想法是,重复整数除法的基本算法,取余数来得到每个数字,将具有O(M(n)log n)复杂性,其中M(n)是乘法算法的复杂性; 然而,除法不是在2个n位数之间,而是1个n位数和一个小常数,因此在我看来复杂性可能更小.