Oracle中十進位制與十六進位制轉換程式
[@more@]CREATE OR REPLACE PROCEDURE dec2hex (in_num IN NUMBER, out_hex OUT VARCHAR2)
IS
TYPE vc2tab_type IS TABLE OF VARCHAR2(1)
INDEX BY BINARY_INTEGER;
hextab vc2tab_type;
v_num NUMBER;
v_hex VARCHAR2(200);
/*
Author: Jonas Nordstrom
*/
BEGIN
IF in_num IS NULL THEN RETURN NULL; END IF;
hextab (0) := '0';
hextab (1) := '1';
hextab (2) := '2';
hextab (3) := '3';
hextab (4) := '4';
hextab (5) := '5';
hextab (6) := '6';
hextab (7) := '7';
hextab (8) := '8';
hextab (9) := '9';
hextab (10) := 'A';
hextab (11) := 'B';
hextab (12) := 'C';
hextab (13) := 'D';
hextab (14) := 'E';
hextab (15) := 'F';
v_num := in_num;
WHILE v_num >= 16
LOOP
v_hex := hextab (MOD (v_num, 16)) || v_hex;
v_num := TRUNC (v_num / 16);
END LOOP;
v_hex := hextab (MOD (v_num, 16)) || v_hex;
out_hex := v_hex;
END; -- dec2hex
/
CREATE OR REPLACE FUNCTION hextointeger (h VARCHAR2)
RETURN PLS_INTEGER
IS
BEGIN
IF NVL (LENGTH (h), 1) = 1
THEN
RETURN INSTR ('0123456789ABCDEF', h) - 1;
ELSE
RETURN 16 * hextointeger (SUBSTR (h, 1, LENGTH (h) - 1)) +
INSTR ('0123456789ABCDEF', SUBSTR (h, -1)) -
1;
END IF;
END hextointeger;
/
CREATE OR REPLACE FUNCTION integertohex (n pls_integer)
RETURN VARCHAR2
IS
BEGIN
IF n > 0
THEN
RETURN integertohex (TRUNC (n / 16)) ||
SUBSTR ('0123456789ABCDEF', MOD (n, 16) + 1, 1);
ELSE
RETURN NULL;
END IF;
END integertohex;
/
IS
TYPE vc2tab_type IS TABLE OF VARCHAR2(1)
INDEX BY BINARY_INTEGER;
hextab vc2tab_type;
v_num NUMBER;
v_hex VARCHAR2(200);
/*
Author: Jonas Nordstrom
*/
BEGIN
IF in_num IS NULL THEN RETURN NULL; END IF;
hextab (0) := '0';
hextab (1) := '1';
hextab (2) := '2';
hextab (3) := '3';
hextab (4) := '4';
hextab (5) := '5';
hextab (6) := '6';
hextab (7) := '7';
hextab (8) := '8';
hextab (9) := '9';
hextab (10) := 'A';
hextab (11) := 'B';
hextab (12) := 'C';
hextab (13) := 'D';
hextab (14) := 'E';
hextab (15) := 'F';
v_num := in_num;
WHILE v_num >= 16
LOOP
v_hex := hextab (MOD (v_num, 16)) || v_hex;
v_num := TRUNC (v_num / 16);
END LOOP;
v_hex := hextab (MOD (v_num, 16)) || v_hex;
out_hex := v_hex;
END; -- dec2hex
/
CREATE OR REPLACE FUNCTION hextointeger (h VARCHAR2)
RETURN PLS_INTEGER
IS
BEGIN
IF NVL (LENGTH (h), 1) = 1
THEN
RETURN INSTR ('0123456789ABCDEF', h) - 1;
ELSE
RETURN 16 * hextointeger (SUBSTR (h, 1, LENGTH (h) - 1)) +
INSTR ('0123456789ABCDEF', SUBSTR (h, -1)) -
1;
END IF;
END hextointeger;
/
CREATE OR REPLACE FUNCTION integertohex (n pls_integer)
RETURN VARCHAR2
IS
BEGIN
IF n > 0
THEN
RETURN integertohex (TRUNC (n / 16)) ||
SUBSTR ('0123456789ABCDEF', MOD (n, 16) + 1, 1);
ELSE
RETURN NULL;
END IF;
END integertohex;
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-999010/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【進位制轉換】十進位制與十六進位制相互轉換方法
- Qt進位制轉換(十進位制轉十六進位制)QT
- 十六進位制轉換為十進位制
- Oracle中的二進位制、八進位制、十進位制、十六進位制相互轉換函式Oracle函式
- 【轉帖】Oracle中的二進位制、八進位制、十進位制、十六進位制相互轉換函式Oracle函式
- 十進位制轉十六進位制
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- Oracle二進位制與十進位制轉換Oracle
- 二進位制、十進位制與十六進位制相互轉化
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- Python 進位制互相轉換(二進位制、十進位制和十六進位制)Python
- 十六進位制數轉十進位制
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- ORACLE使用函式對二進位制、十進位制、十六進位制數互相轉換Oracle函式
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- 大話二進位制,八進位制,十進位制,十六進位制之間的轉換
- oracle 給的轉換函式實現 十六進位制---->十進位制Oracle函式
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- python進位制轉換(二進位制、十進位制和十六進位制)及注意事項Python
- 十進位制轉換為十六進位制和二進位制程式碼例項
- (轉)【iOS 開發】二進位制、十進位制、十六進位制相互轉換的方法iOS
- 十六進位制轉換為八進位制
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機
- [MSSQL]將十進位制轉成十六進位制SQL
- 十進位制——二 (八、十六 )進位制
- 十進位制與二進位制互相轉換指南
- 進位制數轉換方法(八/十六/十)
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- js二進位制和十進位制轉換程式碼JS
- JavaScript十進位制轉換為二進位制JavaScript
- 二進位制轉十進位制快速轉換方法
- js實現的十進位制和十六進位制相互轉換程式碼例項JS
- Go語言實現十進位制轉換成二、八、十六進位制Go
- php中RGB轉十六進位制、十六進位制轉RGBPHP
- 遞迴-進位制轉換器(十六進位制以內)遞迴