`

超级(无限)大的 --- 整型10进制数据与16进制数据相互转换

 
阅读更多
<html>
<title>超级(无限)大的 --- 整型10进制数据与16进制数据相互转换</title>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="数据压缩算法,超过整数表示范围的大数据算术运算,大进制数据互相转换" />
<meta name="keywords" content="高效的乘除法竖式计算模型,乘法转换成加法运算,除法转换成减法运算" />
<meta name="keywords" content="原创作者:zhengzizhi@126.com" />
<script type="text/javascript">


function test16to10(){
   var arr= document.getElementsByTagName("input");
   for(var i=0;i<arr.length;i++) {
      if((arr[i].type == "text" )&&(arr[i].name == "A0116")){
       document.getElementsByName("A0110")[0].value = convertBig16ToInt(arr[i].value); 
       //parseInt(arr[i].value,16).toString(10);
     }
   }
}


function test10to16(){
   var arr= document.getElementsByTagName("input");
   for(var i=0;i<arr.length;i++){
      if((arr[i].type == "text" )&&(arr[i].name == "B0110")){
        document.getElementsByName("B0116")[0].value = convertBigIntTo16(arr[i].value);
        //parseInt(arr[i].value,10).toString(16);
     }
   }
}


function convertBigIntTo16(data){
   data = data.replace(/^(\s|\xA0)+|(\s|\xA0)+$/g, '');   
   var dataLength = data.length;
   if(isNaN(data) || dataLength == 0) return '';
   var yuShu = 0;
   var shang = 0;
   var x = 0;
   var index = 0;
   var yuShuArr = new Array();
   var shangArr = new Array();
   while (dataLength > 1){
       yuShu = 0;
       shang = 0;
       x = 0;
       index = 0;
       shangArr = [];
       while(index < dataLength){
           while(index < dataLength){
              x = yuShu * 10 + parseInt(data.substr(index,1)); 
              yuShu = x;
              if(x > 15){
                index = index + 1;  
                break;
              }else if((index > 1)&&(index + 1 != dataLength)){
                shangArr.push('0');
              }  
              index = index + 1;                
           }
           shang = parseInt(x/16);
           yuShu = x % 16;
           shangArr.push(shang.toString());
        }   
       yuShuArr.push(yuShu.toString());
       data = shangArr.join('');
       dataLength = data.length;
   }
   
   if (dataLength == 1) yuShuArr.push(data);
   for(var i = 0; i < yuShuArr.length; i++){
      if (yuShuArr[i] == 10)
        yuShuArr[i] = "a";
      else if (yuShuArr[i] == 11)
        yuShuArr[i] = "b";
      else if (yuShuArr[i] == 12)
        yuShuArr[i] = "c";
      else if (yuShuArr[i] == 13)
        yuShuArr[i] = "d";
      else if (yuShuArr[i] == 14)
        yuShuArr[i] = "e";
      else if (yuShuArr[i] == 15)
        yuShuArr[i] = "f";
   }
   if(yuShuArr[yuShuArr.length -1] == '0') 
      yuShuArr.pop();
   var result = yuShuArr.reverse().join('');
   return result;
}


function convertBig16ToInt(data){
   data = data.replace(/^(\s|\xA0)+|(\s|\xA0)+$/g, ''); 
   var dataLength = data.length;
   if (dataLength == 0) return '';
   var index = 0;
   var x = 0;
   var geArr = new Array();
   var geTohighArr = new Array();
   var shiTohighArr = new Array(); 
   var yuShuArr  = new Array();
   var resultArr  = new Array();
   resultArr[0] = '0'; 
   var arr16 = new Array();
   arr16['0'] = '0';
   arr16['1'] = '1';
   arr16['2'] = '2';
   arr16['3'] = '3';
   arr16['4'] = '4';
   arr16['5'] = '5';
   arr16['6'] = '6';
   arr16['7'] = '7';
   arr16['8'] = '8';
   arr16['9'] = '9';
   arr16['a'] = '10';
   arr16['b'] = '11';
   arr16['c'] = '12';
   arr16['d'] = '13';
   arr16['e'] = '14';
   arr16['f'] = '15';
   while(index < dataLength){
       geArr = resultArr; 
       resultArr = [];
       geTohighArr = [];     
       for(var i=0;i<geArr.length;i++){
         x = 0;
         x = parseInt(i < geArr.length ? geArr[i] : '0') * 6;
         x = x + parseInt(i < geTohighArr.length ? geTohighArr[i] : '0');
         geTohighArr[i] = x % 10;
         if(x > 0)
         geTohighArr[i+1] = parseInt(x / 10);
       }
       shiTohighArr = [];    
       geArr.unshift(0);
        for(var i=0;i<geArr.length;i++){
         x = 0;
         x = parseInt(i < geArr.length ? geArr[i] : '0');
         x = x + parseInt(i < geTohighArr.length ? geTohighArr[i] : '0');
         x = x + parseInt(i < shiTohighArr.length ? shiTohighArr[i] : '0');
         shiTohighArr[i] = x % 10;
         if(x > 0)
            shiTohighArr[i+1] = parseInt(x / 10);
       }
       geArr = [] ;
       yuShuArr = [];
       yuShuArr  = arr16[data.substr(index,1)].split('').reverse();
       for(var i=0;i<shiTohighArr.length;i++){
         x = 0;
         x = x + parseInt(i < shiTohighArr.length ? shiTohighArr[i] : '0'); 
         x = x + parseInt(i < yuShuArr.length ? yuShuArr[i] : '0');
         x = x + parseInt(i < resultArr.length ? resultArr[i] : '0');
         resultArr[i] = x % 10;
         if(x > 9)
            resultArr[i+1] = parseInt(x / 10);
       }
     index = index + 1;
   }
   if(resultArr[resultArr.length -1] == 0) 
      resultArr.pop();
   var result = resultArr.reverse().join('');
   return result;
}


</script>
<head>
<body> 
  <div><b>十进制数:16001600016                       十六进制数:3b9c50a10                </b></div><br>
  <div><b>十进制数:1600160000                         十六进制数:5f608100                   </b></div><br>
  <div><b>十进制数:12345678901234567890  十六进制数:ab54a98ceb1f0ad2 </b></div><br>
  <div><b>十进制数:12662001107270911155  十六进制数:afb876ebc07c44b3 </b></div><br>
  <div><b>十进制数:4721702174050929320    十六进制数:4186db1c537ecaa8 </b></div><br>
  <div><b>十进制数:16279334710358849629  十六进制数:e1ebd0aadea0385d </b></div><br>
  <div><b>十进制数:14499311425014492826  十六进制数:c937e6eb9fc06e9a  </b></div><br>
  <div><b>十进制数:18379191081977372545  十六进制数:ff1000e97449df81    </b></div><br>
  <div><b>十进制数:3228213681276039511    十六进制数:2ccceb3d4383b157  </b></div><br>
  <div id="xy">
    <div><b>十六进制数转换成十进制数</b></div><br> 
    十六进制:<input type="text" name="A0116" /> 十进制数:<input type="text" name="A0110" readonly="readonly"/><br> 
    <input type="button" value="开始转换" onclick="test16to10()" /><br><br>
  </div>
  <div id="xyz">
    <div><b>十进制数转换成十六进制数</b></div><br> 
    十进制数:<input type="text" name="B0110" /> 十六进制:<input type="text" name="B0116" readonly="readonly"/><br> 
    <input type="button" value="开始转换" onclick="test10to16()" />
 </div>
</body>
</html>

 

分享到:
评论

相关推荐

    16进制与10进制相互转换,整型,双整型,浮点数等

    16进制与10进制数据转换工具,主要用于程序读写PLC,单片机等数据时读取的16进制数据转换成10进制的数,解决初学者的疑惑,数据在单片机或PLC中存储时是以bit、字节为单元存储的,不管是整型数还是浮点数,最终都是...

    16进制数据与浮点型数据转换——c语言程序

    由于浮点数的近似表示,从16进制转换到浮点数然后再转回可能会有微小的差异。这是浮点计算固有的性质,需要理解并适当地处理这些可能的不精确性。 8. **实际应用**: 这样的转换工具在数据通信、文件解析、协议...

    STM32数据进制转换程序,移植方便

    例如,他们可能需要将接收到的串口数据转换为10进制,或者将存储在EEPROM中的配置参数从十六进制转换为二进制以便处理。 总结来说,这个STM32数据进制转换程序是嵌入式开发中的实用工具,通过其高效的算法和良好的...

    C#16进制转换10进制

    本文主要讲解如何在C#中实现16进制转换为10进制,以及相关的位运算知识。 首先,让我们来看看C#如何进行16进制到10进制的转换。C#提供了`Convert.ToInt32`方法,它接受一个字符串形式的数值和一个表示原数值基数的...

    SQL脚本函数 16进制转换为10进制

    ### SQL脚本函数:16进制转换为10进制 #### 背景介绍 在数据库管理和软件开发过程中,经常需要处理不同进制之间的数值转换问题。尤其是在处理网络协议、加密算法或是数据存储格式时,十六进制与十进制之间的转换...

    易语言10进制与16进制互相转换服务源码

    通过学习和理解这部分源码,不仅可以掌握10进制与16进制转换的易语言实现,还可以了解到如何在实际编程中应用这些知识,比如在数据解析、编码解码等场景。 学习这个服务源码,开发者可以深入理解进制转换的内部机制...

    十六进制与有符号十进制转换

    16进制与有符号10进制间的相互转换,支持16进制数转换为有符号10进制数,或将有符号10进制转换为16进制数,可选包含1、2、4、8字节。

    vc 16进制字符串转换为10进制的整数

    在VC++编程环境中,我们经常需要处理不同进制之间的转换,比如将16进制的字符串转换成10进制的整数。16进制(Hexadecimal)是一种逢16进1的计数制,它使用数字0到9以及字母A到F来表示数值,而10进制是我们日常生活中...

    BAT批处理脚本-格式转换-十进制转十六进制.cmd.zip

    十六进制由0-9和A-F这16个符号组成,其中A代表10,B代表11,C代表12,D代表13,E代表14,F代表15。 在批处理脚本中,可以使用`set /a`命令来进行数学计算,包括十进制到十六进制的转换。这个命令允许我们设置变量并...

    VB--十进制,八进制,十六进制,二进制相互转换大全

    以上四个函数覆盖了常见的进制转换需求,在多种编程任务中都有广泛的应用,例如数据压缩、加密算法、网络协议解析等。理解并掌握这些转换逻辑,对于深入学习计算机科学基础和提高编程能力都大有裨益。

    大数16进制向10进制转换

    - **基础原理**:大数16进制转换为10进制的核心是逐位进行乘以16的幂并累加。具体步骤如下: 1. 从右向左,将16进制数的每一位视为16的幂次方,例如最右边的一位对应16^0,第二位对应16^1,以此类推。 2. 对于每...

    易语言源码易语言文本和16进制相互转换工具.rar

    总的来说,"易语言源码易语言文本和16进制相互转换工具"为学习者提供了一个实践易语言编程和16进制转换的好例子,同时也是一个方便的实用工具,能够帮助用户在日常工作中快速处理文本与16进制数据之间的转换。

    10进制与16进制互相转换服务源码.rar

    易语言是一种以中文为编程语句的编程环境,它提供了方便的10进制与16进制转换函数。在提供的"易语言10进制与16进制互相转换服务源码"中,你可以找到实现这些转换的具体代码。通常,这种源码会包含以下功能: 1. `十...

    sql 脚本函数 10进制转换为16进制

    本文将深入探讨一种特定的SQL脚本函数——十进制数转换为十六进制数的功能,这一过程对于处理数据、加密解密以及色彩代码等领域尤为重要。 ### SQL脚本函数:十进制转十六进制 #### 函数定义 SQL脚本函数`[dbo]....

    ascii 16进制 10进制之间转换

    16进制转换为ASCII码,首先将其转换为10进制,然后找到对应的ASCII字符。例如,16进制的"2D"转换为10进制是45,对应的ASCII字符是"-"。 在实际工作中,我们有时会使用工具来进行这些转换,如提到的"ASCII及进制...

    VC进制转换:10进制整型转2、8、16进制

    在VC(Visual C++)环境中,我们需要对数字进行不同进制的转换,例如从10进制转换为2(二进制)、8(八进制)和16(十六进制)。这篇文章将详细讲解如何在VC环境下实现这些转换。 首先,让我们理解各个进制的基本...

    C#浮点数和16进制字节数互相转换

    在C#编程语言中,处理浮点数与16进制表示之间转换是常见的任务,尤其是在数据存储、网络传输或二进制解析等场景。本文将深入探讨如何使用C#来实现单精度浮点数(Single)与16进制字符串的相互转换。 首先,我们需要...

    HexToten.rar_10进制转_10进制转16进制_16进制_16进制转10进制_c 16进制转10

    在IT行业中,10进制和16进制之间的转换是一项基本操作,特别是在编程领域,尤其是在处理二进制数据、网络通信或者硬件交互时。10进制是我们日常生活中的常规计数方式,而16进制(也称为十六进制)在计算机科学中广泛...

    16进制转10进制的源代码程序

    2. **位运算**:如果输入是整型16进制数,可以直接通过位移和按位与操作进行转换。这种方法效率较高,但输入必须是已知的整型数值。 ```cpp #include int hexToDec(int hexNum) { int decValue = 0; while ...

    10进制和16进制转换工具

    转换工具~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Global site tag (gtag.js) - Google Analytics