mysql 10进制与35进制之间的转换 注意Power处理bigint的问题
35进制的目的是防止0和O造成的视觉误差
BEGIN
DECLARE m_StrHex35 VARCHAR(100); -- 返回35进制表示的结果
DECLARE m_Remainder BIGINT; -- 余数
DECLARE m_Base35 VARCHAR(1);
SET m_Remainder=0;
SET m_StrHex35='';
WHILE p_Hex10>=35 DO
SET m_Remainder=p_Hex10%35;
SET p_Hex10=(p_Hex10-m_Remainder)/35;
SET m_Base35=SUBSTRING('0123456789ABCDEFGHIJKLMNPQRSTUVWXYZ',m_Remainder+1,1);
SET m_StrHex35=CONCAT(m_Base35,m_StrHex35);
END WHILE;
SET m_Remainder=p_Hex10%35;
SET m_Base35=SUBSTRING('0123456789ABCDEFGHIJKLMNPQRSTUVWXYZ',m_Remainder+1,1);
SET m_StrHex35=CONCAT(m_Base35,m_StrHex35);
-- PRINT @StrHex35
RETURN m_StrHex35;
END
BEGIN
DECLARE m_StrHex35Len INT ; -- 被转换35进制字串的长度
DECLARE m_Base35To10 INT ; -- 每位35进制基数对应的10进制数据大小
DECLARE m_Index INT ; -- 字符串索引
DECLARE m_Hex10 BIGINT ; -- 被返回10进制数据
DECLARE m_Base35 VARCHAR(1) ; -- 35进制基数
DECLARE m_Middle_Data BIGINT;
SET m_Hex10=0;
SET m_StrHex35Len=LENGTH(p_StrHex35);
SET m_Index=1;
WHILE (m_Index<=m_StrHex35Len) DO
SET m_Base35=SUBSTR(p_StrHex35 from m_Index for 1);
SET m_Base35To10= LOCATE(m_Base35,'0123456789ABCDEFGHIJKLMNPQRSTUVWXYZ') - 1;
-- 注意:这里必须先把Power的值保存到一个变量,不能计算的结果直接乘一个另外的变量,这样会造成计算结果不正确
SET m_Middle_Data = POWER(35,m_StrHex35Len-m_Index);
SET m_Hex10=m_Hex10+m_Base35To10 * m_Middle_Data;
SET m_Index=m_Index+1;
END WHILE;
RETURN m_Hex10;
END
mysql 10进制与35进制之间的转换 注意Power处理bigint的问题的更多相关文章
- golang中字符串、数值、2进制、8进制、16进制、10进制、日期和字符串之间的转换
package main import ( "fmt" "reflect" "strconv" "time" ) fun ...
- C++ 中 int 转string, 以及10进制转2进制
感谢:http://blog.csdn.net/xiaofei2010/article/details/7434737 以及:http://www.cnblogs.com/nzbbody/p/3504 ...
- js用8421码实现10进制转2进制
今天早上突然心血来潮决定用 ''和js来撸一个进制转换.(纯属心血来潮,有兴趣的可以看看.) 我们知道,通过8421码.可以快速的得到一个10进制的2进制.如下图: 如上图所示:我们将10进制的 '1 ...
- python中2进制、10进制、16进制等之间的转换
10转2: bin(8) # '0b1000' 2转10: int( 10转16: hex(15) # '0xf' 16转10: int( 2进制和16进制中间通过转10进制可以相互转换 from b ...
- javascript 10进制和64进制的转换
原文:javascript 10进制和64进制的转换 function string10to64(number) { var chars = '0123456789abcdefghigklmnopqr ...
- c# 关于10进制和16进制转换以及显示
直接举例说明: int i = 15;//一个10进制数 string txt = Convert.ToString(i,16);//将上面10进制以16进制形式显示为f string s = &qu ...
- python3 第十九章 - 写一个10进制转任意进制的函数
我们先回忆下之前所学的进制转换的知识(详见:第十章),10进制转其它进制的方法是: 整数部分,除基取余,逆序排列 小数部分,乘基取整,顺序排列 负数,按绝对值处理 好,假设我们需要转化的数都是正整数, ...
- 10进制 VS 2进制
10进制 VS 2进制 时间限制: 1 Sec 内存限制: 32 MB 题目描述 样例输出 623 #include<stdio.h> #include<string.h> ...
- 题目1208:10进制 VS 2进制(进制转换以及大数保存问题)
题目链接:http://ac.jobdu.com/problem.php?pid=1208 详细链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
随机推荐
- win7 通过命令行压缩文件
1,下载winrar这款软件(可能要正式版) 2,安装完之后在c:\programe files里找到winrar目录,复制winrar目录里的winRar.exe文件到c盘下的windows目录 3 ...
- Debian 入门安装与配置2
Debian 入门安装与配置2 1. C/C++开发必装软件 atp-get install gcc 这个不用说,用来编译C程序 apt-get install g++ 用来编译C++程序 ap ...
- IOKit找不到问题定义
Xcode511下Undefined symbols for architecture armv7s: "_IOMasterPort", referenced from: ...
- ehcache 缓存
一:详细配置步骤 1,添加ehcache.xml文件 将ehcache.xml文件添加到src路径下面.ehcache.xml文件内容如下 <ehcache> <diskStore ...
- 浅谈C中的malloc和free
转自http://bbs.bccn.net/thread-82212-1-1.html非常感谢作者 浅谈C中的malloc和free 在C语言的学习中,对内存管理这部分的知识掌握尤其重要!之前对C中的 ...
- exit()和_exit()函数
进程就好比人一样有其生命,我们通过fork()函数来创建一个进程,那么我们又是如何来中止进程呢. 进程退出 1.在Linux中任何让一个进程退出 进程退出表示进程即将结束.在Linux中进程退出分为了 ...
- Prim求解最小生成树
#include "ljjz.h" typedef struct edgedata /*用于保存最小生成树的边类型定义*/ { int beg,en; /*beg,en是边顶点序号 ...
- js/jsp清空表单2种方法
js方式清空表单数据的两种方式 方法1:遍历页面元素 /* 清空FORM表单内容 id:表单ID*/ function ClearForm(id) { var objId = docume ...
- leetcode 97 Interleaving String ----- java
Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example,Given:s1 = ...
- Linux内核编译和运行(转-段玉磊)
内核获取网站:https://www.kernel.org/pub/linux/kernel/ 步骤如下: 1.打开终端,更改用户权限为root.具体做法是在终端输入sudo su,然后按提示输入密码 ...