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

<html>

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

<head>

<meta charset="utf-8"/>

<meta name="keywords" content="数据压缩算法,超过整数表示范围的大数据算术运算,大进制数据互相转换" />

<meta name="keywords" content="高效的乘除法竖式计算模型,乘法转换成加法运算,除法转换成减法运算" />

<meta name="keywords" content="原创作者:[email protected]" />

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

时间: 2025-01-15 19:52:40

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

自定义函数实现10进制转化为16进制

把结果都列出来,可以提升代码运行速率 #include<stdio.h> char hex_char(unsigned int n) { switch(n) { case 0: return '0'; case 1: return '1'; case 2: return '2'; case 3: return '3'; case 4: return '4'; case 5: return '5'; case 6: return '6'; case 7: return '7'; case 8:

10进制数转为16进制

问题 输入一个10进制数,输出这个10进制数对应的16进制数 思路 首先用10进制数除以16,余数则为不能进位的数字,则写在最低位上,商的含义是有多少个16,如果商大于等于16的话,意味还可以接着进位,那么用商接着除以16,余数写在倒数第二位上--以此进行下去,直到不能进位为止 代码 #include <iostream> #include<string> using namespace std; string m = "0123456789ABCDEF"; i

MFC 编辑框输入16进制字符串转换为16进制数或者10进制数据计算

1.编辑框添加变量,并选择变量类型为CString. 2.  使用"_tcstoul"函数将Cstring 类型转换为16进制/10进制数进行计算. 原文地址:https://www.cnblogs.com/lize19940412/p/10068273.html

关于2进制直接转16进制

实际中估计也没有这个需求,只是写写. 能不能直接由2进制转为16进制呢,最直接的办法是通过位移操作,也就是通常所说的 每四位二进制对应一个16进制, 假如java中有一种 二进制的基础类型 Binary bi = new Binary(11010101);这样的话 进行 bi >>> 4 位移操作 就可以很容易转换了,关于这个可以参考Integer.java中的toHexString(int i)方法. 但是没有这种类型,java中貌似没有直接转化的方法,也就只能先转为10进制,再转为1

10进制转化为16进制以内的转化

进制转化问题十进制转化为其它进制应该是比较简单的问题,就是一个%和/的问题,模之后再除就ok了 1 int a[1000]; 2 char c[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; 3 int main() 4 { 5 int m,n,i,t,k; 6 printf("十进制数:"); 7 scanf("%d",&n); 8 printf("多少进制

Java中将10进制转换成16进制

import java.util.Scanner; public class Decimal2HexConversion {     public static void main(String[] args){         Scanner input = new Scanner(System.in);         System.out.print("输入一个十进制数: ");         int decimal = input.nextInt();         Sys

SQL SERVER 自定义函数 整数转成指定长度的16进制 转换成指定长度的16进制 不足补0

最近做项目扩展的时候,遇到问题就是将整型转换成指定长度的16进制 刚开始就是直接使用 cast(12 as varbinary(4))但是发现这个不能解决我的问题 所以就上网搜了一下,然后改了改,下面就是函数: 1 Create Function IntToHexLength(@Num int,@HxLength int) 2 returns varchar(16) 3 as 4 begin 5 declare @Mods int,@res varchar(16),@Length int 6 s

C语言的整型溢出问题(转)

整型溢出有点老生常谈了,bla, bla, bla… 但似乎没有引起多少人的重视.整型溢出会有可能导致缓冲区溢出,缓冲区溢出会导致各种黑客攻击,比如最近OpenSSL的heartbleed事件,就是一个buffer overread的事件.在这里写下这篇文章,希望大家都了解一下整型溢出,编译器的行为,以及如何防范,以写出更安全的代码. 什么是整型溢出 C语言的整型问题相信大家并不陌生了.对于整型溢出,分为无符号整型溢出和有符号整型溢出. 对于unsigned整型溢出,C的规范是有定义的——“溢出

Json.NET特殊处理64位长整型数据

很多ASP.NET项目,尤其是使用了Ajax的项目,常常需要返回JSON格式的数据..NET框架从3.5版本开始提供了JSON的序列化和反序列化工具,不过个人感觉不太好用,后来找了第三方的Newtonsoft.Json来用.再后来,在MVC4中,微软已经默认使用Json.NET(Newtonsoft.Json)来处理JSON数据了. JavaScript数值精度是32位,如果整数数度超过32位,就会被当作浮点数处理.换句话说,如果从服务端生成的JSON,某个值是64位整数,传到前端JavaScr