الانتقال إلى المحتوى

للمهتمين convert betwen hexadecimal values and dec


عبداللطيف

Recommended Posts

تحياتي لكم

للمهتمين في عمليات التحويل وامكانية استخدمها في عمليات التشفير لي ولكم الفائدة ان شاء الله ، فلا تنسو الدعاء لي وللجميع

تحياتي محبكم
Tofeee
======

convert betwen hexadecimal values and decimal/integer values. 

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




والمثال بالملف المرفق

dec2hex.sql

رابط هذا التعليق
شارك

  • بعد 9 شهور...

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية