给定一个潜在的巨大整数值(采用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
到十六进制当量.
这些不起作用:
我正在努力将非常大的十六进制数转换为十进制数.我的问题是,当我尝试转换14位以上的十六进制数时,使用deciaml = parseInt(十六进制,16)会给出数字错误.
我在Java中没有这个问题,但Javascript在十六进制的14位数之上似乎不准确.
我试过"BigNumber",但是这给了我同样的错误结果.
我已尽最大努力浏览网页,并找到了可以进行转换的网站,但无法弄清楚如何进行转换.
我已经尝试依次获取每个角色并将其乘以其因子,即123456789abcdef 15*Math.pow(16,0)+ 14*Math.pow(16,1)....等我认为(作为菜鸟)我的子程序可能不是他们应该的全部,因为我得到了一个完全(我的意思是真的不同!)的答案.
如果它可以帮助你们,我可以发布我到目前为止所写的内容供你查看,但我希望有人对我有简单的答案.
<script>
function Hex2decimal(hex){
var stringLength = hex.length;
var characterPosition = stringLength;
var character;
var hexChars = new Array();
hexChars[0] = "0";
hexChars[1] = "1";
hexChars[2] = "2";
hexChars[3] = "3";
hexChars[4] = "4";
hexChars[5] = "5";
hexChars[6] = "6";
hexChars[7] = "7";
hexChars[8] = "8";
hexChars[9] = "9";
hexChars[10] = "a";
hexChars[11] = "b";
hexChars[12] = "c";
hexChars[13] = "d";
hexChars[14] = "e";
hexChars[15] = "f";
var index = 0; …Run Code Online (Sandbox Code Playgroud) 冒着这个问题被投票重复,甚至被关闭的风险,我提出了这个问题。
背景
在“普通”数据类型(例如 int、long long 等)中,要将二进制数值转换为十进制字符串,您可以执行以下操作(以伪代码形式):
Set length = 0
Set divisor to largest base10 value the data type will hold (Divisor).
Loop
Divide number in question by divisor.
Place result in a string at position length.
Increment the length by 1.
Divide the divisor by 10.
Reverse the string.
Print the string.
Run Code Online (Sandbox Code Playgroud)
(大多数)任何语言的实际实现都是相当简单的。
问题
我在使用上述方法时遇到的问题是,对于大整数(也称为任意精度算术),没有最大的基数 10 值可以开始。所以问题是“如果无法知道除数是多少,如何将除数初始化为最大可能的 base10 值?”
我尝试过的
仍在尝试起草解决方案。
研究
我在这里找到的一些链接包括以下内容:
将“大”十六进制数(字符串格式)转换为十进制数(字符串格式),无需 BigInteger 类