CREATE OR REPLACE PROCEDURE CONVERT_16_10
/*16进制转10进制,双字节算法实现*/
(
I_DATA VARCHAR2,
O_DATA OUT VARCHAR2
)
AS
V_TMP_BEGIN INT;
V_TMP_LEN INT;
V_TMP_VAL INT := 0;
V_TMP_TEXT VARCHAR2(1);
V_TMP_DATA VARCHAR2(100);
BEGIN
IF I_DATA IS NULL THEN
RETURN;
ELSE
V_TMP_BEGIN := 1;
V_TMP_LEN := LENGTH(I_DATA);
IF V_TMP_LEN > 8 THEN
RETURN;
END IF;
IF V_TMP_LEN = 1 AND I_DATA = '0' THEN
O_DATA := '0';
RETURN;
END IF;
END IF;
WHILE V_TMP_BEGIN <= V_TMP_LEN LOOP
V_TMP_TEXT := SUBSTR(I_DATA, V_TMP_BEGIN, 1);
IF V_TMP_TEXT NOT IN
('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F') THEN
RETURN;
END IF;
IF V_TMP_TEXT = '1' THEN
V_TMP_DATA := V_TMP_DATA || '0001 ';
ELSIF V_TMP_TEXT = '2' THEN
V_TMP_DATA := V_TMP_DATA || '0010 ';
ELSIF V_TMP_TEXT = '3' THEN
V_TMP_DATA := V_TMP_DATA || '0011 ';
ELSIF V_TMP_TEXT = '4' THEN
V_TMP_DATA := V_TMP_DATA || '0100 ';
ELSIF V_TMP_TEXT = '5' THEN
V_TMP_DATA := V_TMP_DATA || '0101 ';
ELSIF V_TMP_TEXT = '6' THEN
V_TMP_DATA := V_TMP_DATA || '0110 ';
ELSIF V_TMP_TEXT = '7' THEN
V_TMP_DATA := V_TMP_DATA || '0111 ';
ELSIF V_TMP_TEXT = '8' THEN
V_TMP_DATA := V_TMP_DATA || '1000 ';
ELSIF V_TMP_TEXT = '9' THEN
V_TMP_DATA := V_TMP_DATA || '1001 ';
ELSIF V_TMP_TEXT = 'A' THEN
V_TMP_DATA := V_TMP_DATA || '1010 ';
ELSIF V_TMP_TEXT = 'B' THEN
V_TMP_DATA := V_TMP_DATA || '1011 ';
ELSIF V_TMP_TEXT = 'C' THEN
V_TMP_DATA := V_TMP_DATA || '1100 ';
ELSIF V_TMP_TEXT = 'D' THEN
V_TMP_DATA := V_TMP_DATA || '1101 ';
ELSIF V_TMP_TEXT = 'E' THEN
V_TMP_DATA := V_TMP_DATA || '1110 ';
ELSIF V_TMP_TEXT = 'F' THEN
V_TMP_DATA := V_TMP_DATA || '1111 ';
ELSE
V_TMP_DATA := V_TMP_DATA || '0000 ';
END IF;
V_TMP_BEGIN := V_TMP_BEGIN + 1;
END LOOP;
O_DATA := REPLACE(V_TMP_DATA, ' ', '');
IF LENGTH(O_DATA) = 32 THEN
-- 初始值要么为0,要么为最小值
V_TMP_VAL := TO_NUMBER(SUBSTR(O_DATA, 1, 1)) * POWER(2, 31) * -1;
-- 重新初始化字符串对象
O_DATA := SUBSTR(O_DATA, 2);
END IF;
V_TMP_BEGIN := 1;
V_TMP_LEN := LENGTH(O_DATA);
WHILE V_TMP_BEGIN <= V_TMP_LEN LOOP
IF SUBSTR(O_DATA, V_TMP_BEGIN, 1) = '1' THEN
V_TMP_VAL := V_TMP_VAL + POWER(2, V_TMP_LEN - V_TMP_BEGIN);
END IF;
V_TMP_BEGIN := V_TMP_BEGIN + 1;
END LOOP;
O_DATA := TO_CHAR(V_TMP_VAL);
END;
分享到:
相关推荐
返回的结果是二进制的,可以进一步转换为16进制字符串。 MySQL也有内置的`MD5()`函数,用于计算字符串的MD5值: ```sql SELECT MD5('Hello, World!'); ``` 这将直接返回一个32位的十六进制MD5摘要。 在处理MD5时...
- **十六进制 (hex)**:十六进制是基于16的计数系统,使用0到9和A到F这16个符号。Java的Integer.toHexString()方法可以将十进制数转换为十六进制字符串。 6. **用户界面**:虽然描述没有提及,但通常一个计算器会...
MD5是一种广泛使用的哈希函数,它将任意长度的输入转化为固定长度的128位(16字节)摘要。在Oracle中,可以使用`DBMS_OBFUSCATION_TOOLKIT`包的`MD5`函数来计算MD5哈希值。`MD5`函数接收一个VARCHAR2类型的输入(`...
数制转换通常采用位权展开法,将一个数制转换为10进制,再从10进制转换为其他数制。 数据单位在计算机中扮演着重要角色。最基本的单位是位(bit),它代表1个二进制数,即0或1。8个位组成1个字节(Byte),是存储...
8. **数的比较**:不同进制数中,(2E)16(A)最大,因为转换为十进制后为46,其余数均小于46。 9. **二进制转八进制**:二进制数101101101101.11转换成八进制数是5555.6(B)。 10. **逻辑运算**:执行逻辑或运算...
值范围: Oracle8i National Language Support Guide 中指定的任何有效的10 字节字符串。 默认值: 从 NLS_TERRITORY 中获得 nls_date_language: 说明: 指定拼写日期名, 月名和日期缩写词 (AM, PM, AD, BC) 的语言。...
在AES256Util中,这个库可能会被用于将加密后的字节数组转换为可读的Base64字符串,以及将接收到的Base64字符串解码回字节数组进行解密。 在实际应用中,AES256加密工具类可以用于保护敏感信息,例如用户密码、...
2. 最大的10位无符号二进制整数转换成八进制数,转换规则为每3位二进制对应1位八进制,所以最大值是1111111111,转换为八进制为1777。 3. 关于PC机CPU的描述,错误的是B,双核CPU并不是指主板上有两个独立的芯片,...
58 <br>0081 文本中首字母改为大写 59 <br>0082 C#随机数的产生 59 <br>0083 身份证从15位升至18位算法 60 <br>0084 十进制数转二进制数的算法 60 <br>0085 十进制数转八进制数的算法 61...
3. **存储容量单位**:计算机中的存储容量通常以二进制位(bit)为最小单位,常见的还有字节(byte)、千字节(KB)、兆字节(MB)、吉字节(GB)等。 4. **C语言数组定义**:在C语言中,一维数组的定义方式是`类型...
10. **计算思维**:计算思维涉及抽象、算法设计、问题转化等,不直接依赖数学公式和定理(D)。 11. **Excel分类汇总**:在进行分类汇总前,需先对数据进行排序(B)。 12. **网络安全**:网络钓鱼攻击(C)不等同...
这是一个实现了 Yen 的排名算法的无环路径的项目 Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是...
10. 关系型数据库:目前大多数数据库管理系统支持关系型数据模型,如SQL Server、Oracle、MySQL等。 11. 控制结构:程序设计中的基本控制结构包括顺序、分支和循环。 12. 图灵机与冯·诺依曼模型:存储程序和程序...
这是一个实现了 Yen 的排名算法的无环路径的项目 Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是...
这是一个实现了 Yen 的排名算法的无环路径的项目 Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是...
24. **页面调度算法**:虚拟存储器通常使用优化的调度算法,如最近最少使用(LRU),而不是FIFO。 选择题部分涉及了操作系统、软件类型、计算机层次、编程语言、硬件性能等多个知识点,如: 1. **D. Oracle** 不是...
成人计算机统考试题九涉及到多个IT领域的基础知识,涵盖了计算机存储、网络、操作系统、数据库、编程、计算机硬件、软件开发流程、编码标准、网络协议等多个方面。...30. 十进制114转二进制是1110010。答案是B。
Java 程序编译成字节码后,可以在任何支持 JVM 的平台上运行,无需重新编译。 ### Map 集合特点 8. **Map 集合的键值对概念**。 - **解释**:Map 集合中的元素都是以键值对的形式存在的,其中键是唯一的,而值可以...
- **描述**:与 UUID.Hex 类似,但生成的是一个 16 字节的字符串。 - **应用场景**:适用于需要较短字符串形式的 GUID 的场景。 #### 10. Foreign - **描述**:使用外部表的一个字段作为主键。 - **应用场景**:当...