2进制~62进制与10进制的转换

转换

  效果如下:

//var str="AZ"; 
//for(var i=0;i<str.length;i++)trace(str.charCodeAt(i)); 
//charCode:0-9:(48-57);A-Z:(65-90);a-z:(97-122); 
//将10进制数N转换成d进制数(以0-9,A-Z,a-z字符表示),d为2-62 
function jh_10toD(N, d) { 
  N = Math.floor(Number(N)); 
  d = Math.floor(Number(d)); 
  d = d<2 ? 2 : d>62 ? 62 : d; 
  var s, e = ""; 
  while (N>0) { 
    s = N%d; 
    if (s>35) { 
      //36至62的数用a-z字符表示(s-36+97) 
      s = String.fromCharCode(s+61); 
    } else if (s>9) { 
      //10至35的数用A-Z字符表示(s-10+65) 
      s = String.fromCharCode(s+55); 
    } 
    e = s+e; 
    N = Math.floor(N/d); 
  } 
  e = e != "" ? e : "0"; 
  return e; 

//将d进制数转换为10进制 
function jh_Dto10(str, d) { 
  d = Math.floor(Number(d)); 
  d = d<2 ? 2 : d>62 ? 62 : d; 
  var code = 0, num = 0; 
  for (var i = 0; i<str.length; i++) { 
    code = str.charCodeAt(i); 
    if (code>96) { 
      code -= 61; 
    } else if (code>64) { 
      code -= 55; 
    } else { 
      code -= 48; 
    } 
    num += code*Math.pow(d, str.length-1-i); 
  } 
  return num; 

//测试: 
in_D = 62; 
num1 = "15000"; 
num2 = jh_10toD(num1, in_D); 
bt1.onRelease = function() { 
  num2 = jh_10toD(num1, in_D); 
}; 
bt2.onRelease = function() { 
  num1 = jh_Dto10(num2, in_D); 
}; 

时间: 2024-10-02 22:49:22

2进制~62进制与10进制的转换的相关文章

10进制整数转62进制的函数

  /** * 10进制转为62进制 * * @param integer $n 10进制数值 * @return string 62进制 */ function dec62($n) { $base = 62; $index = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $ret = ''; for($t = floor(log10($n) / log10($base)); $t >= 0; $t --)

javascript 10进制和62进制的相互转换_javascript技巧

function string10to62(number) { var chars = '0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ'.split(''), radix = chars.length, qutient = +number, arr = []; do { mod = qutient % radix; qutient = (qutient - mod) / radix; arr.unshift(char

SQL SERVER 16进制与10进制转换

最近工控项目中遇到的16进制与10进制转换,在.NET中比较容易实现,在SQLSERVER中发现没有直接 的转换,尤其是出现超出范围的long负数,即无符号64位整数在sqlserver中的存储.网上找的很多方法 只适用于32位整数和64位正整数,64位负数无法实现,现将使用的转换方法记录下来. 利用SQLSERVER中的varbinary来间接实现. 16进制字符串转10进制bigint(0-FFFFFFFFFFFFFFFF): 由于二进制比较容易转换为bigint 所以先将字符串转为二进制v

PB中编写10进制到其他进制的转换函数

有时候我们要用到10进制与其他进制之间的转换,如10-16进制的转换.在此我编写了一个函数,可以方便的把10进制转换到其他进制. 函数为changejz(long shi,int how )其中参数shi为要转换的10进制数据,how为要转换到的进制类型,取值为2,8,16三个,整个函数的返回值为string型. 大家都知道,要把10进制转换到诸如8进制,首先得转换到2进制,再由2进制转换到8进制,所以函数的第一步为:把输入的数据都由10进制转换到2进制. 2进制 8进制 10进制 16进制 1

Delphi实现把10进制转换成16进制的函数进制转化

  delphi中有直接把10进制转换成16进制的函数: function IntToHex(Value: Integer; Digits: Integer): string; overload;  function IntToHex(Value: Int64; Digits: Integer): string; overload; unit uConversion; interface uses SysUtils,Math; type TConversion = class public //

java-为什么编写程序的时候数据不统一用10进制,这样程序员也比较好理解啊

问题描述 为什么编写程序的时候数据不统一用10进制,这样程序员也比较好理解啊 为什么编写程序的时候数据不统一用10进制,这样程序员也比较好理解啊 解决方案 大多数时候都是用10进制的,目的就是便于理解.但是有时候用16进制,因为在某些场合下,16进制更好理解.比如说字节数据,10进制下,529你能看出是哪两个字节么?但是0x0211,一看就是02 11两个字节. 解决方案二: 你可以用十进制,但是很多时候16进制更方便,比如控制灯的开关,十六进制加上位操作可以较为直观的编写出控制程序 解决方案三

10进制 16进制-Extjs中怎样将页面上的10进制数字转换成16进制的保存到数据库

问题描述 Extjs中怎样将页面上的10进制数字转换成16进制的保存到数据库 Extjs中怎样将页面上的10进制数字转换成16进制的保存到数据库 急啊 解决方案 var a=101; a=a.toString(16); alert(a);//用Ext.ajax发送a到服务器保存 http://docs.sencha.com/extjs/4.1.3/#!/api/Ext.Ajax 解决方案二: 1990(10)= 124 ×16+6 =(7×16+12)×16+6--乘出来= =7×16×16+1

string-c++16进制转10进制问题

问题描述 c++16进制转10进制问题 我用string存储了输入的一个16进制数,现在要把它转换为10进制输出,除了用数位乘上权值之外还有什么方法办到这一点吗? 另外,16进制用int 储存吗?如果可以需要什么语句呢? 解决方案 给你说两个函数,都可以解决这个问题 1.sscanf(str,"%x",&iNum) 2.iNum = strtol(str,**p,16); 你可以查查资料,这两个函数都可以把十六进制的字符串转换成十进制数据: 另外十六进制可以用int存储,只不过

c#-C#16进制转换成10进制的问题

问题描述 C#16进制转换成10进制的问题 C# int a = 0x00002EE5; int b = 5 + 15 * 16 + 15 * 16 * 16 + 2 * 16 * 16 * 16; int c = Convert.ToInt32(a); 运行结果 b = 12777 c = 12005 这是哪出现了问题? 解决方案 E是14,F是15,16进制0到F对应的值是0到15,你重新计算一下 5 + 14 * 16 + 14 * 16 * 16 + 2 * 16 * 16 * 16 =