日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql 10进制转2进制_Oracle 10进制转换2进制

發布時間:2025/3/12 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql 10进制转2进制_Oracle 10进制转换2进制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寫了個Oracle轉換函數,發現當數據為負數的時候,無法轉換,因為業務前端入庫的數據是32位,當JAVA進行有符號轉換為INT類型的時候

寫了個Oracle轉換函數,發現當數據為負數的時候,無法轉換,,因為業務前端入庫的數據是32位,當JAVA進行有符號轉換為INT類型的時候,會產生負數,而我要再次轉換為二進制進行位的判斷,網上找了好多,都不能做有符號數字的轉換,因此按照負數的二進制表示法重新寫了個函數:

負數的二進制方法的表示方法:例如 -5

第一步:首先要把5變成101的二進制形式

第二步:再者就是安位取反,(形成前面全是1)010

第三步:在最后加1 形成:11111111 11111111 11111111 11111011

CREATE OR REPLACE FUNCTION NUMBER_2_BIT(V_NUM NUMBER) RETURN VARCHAR IS

V_RTN VARCHAR(2000);

V_N1 NUMBER;

V_N2 NUMBER;

BEGIN

V_N1 := ABS(V_NUM);

--如果為正數

IF SIGN(V_NUM) > 0 THEN

LOOP

V_N2 := MOD(V_N1, 2);

V_N1 := ABS(TRUNC(V_N1 / 2));

V_RTN := TO_CHAR(V_N2) || V_RTN;

EXIT WHEN V_N1 = 0;

END LOOP;

--dbms_output.put_line('正數結果'||V_RTN);

--補全32位高位0

SELECT lpad(V_RTN,32,0)

INTO V_RTN

FROM dual;

--dbms_output.put_line('正數補全結果'||V_RTN);

ELSE

--轉換為二進制同時按位取反

LOOP

V_N2 := MOD(V_N1, 2);

IF V_N2 = 1 THEN

V_N2 := 0;

ELSIF V_N2 = 0 THEN

V_N2 := 1;

END IF;

V_N1 := ABS(TRUNC(V_N1 / 2));

V_RTN := TO_CHAR(V_N2) || V_RTN;

EXIT WHEN V_N1 = 0;

END LOOP;

--dbms_output.put_line('負數結果'||V_RTN);

--補全32位高位1

SELECT lpad(V_RTN,32,1)

INTO V_RTN

FROM dual;

--dbms_output.put_line('負數補全1結果'||V_RTN);

--二進制轉換為10機制,同時+1

SELECT SUM(data1) + 1

INTO V_N1

FROM (SELECT substr(V_RTN, rownum, 1) * power(2, length(V_RTN) - rownum) data1

FROM dual

CONNECT BY rownum <= length(V_RTN));

-- dbms_output.put_line('轉換為十進制數結果'||V_RTN);

----轉換為二進制

LOOP

V_N2 := MOD(V_N1, 2);

V_N1 := ABS(TRUNC(V_N1 / 2));

V_RTN := TO_CHAR(V_N2) || V_RTN;

EXIT WHEN V_N1 = 0;

END LOOP;

--dbms_output.put_line('負數轉換結果'||V_RTN);

--補全32位高位0

SELECT lpad(V_RTN,32,0)

INTO V_RTN

FROM dual;

--dbms_output.put_line('負數補全0結果'||V_RTN);

END IF;

RETURN V_RTN;

END;

本文原創發布php中文網,轉載請注明出處,感謝您的尊重!

總結

以上是生活随笔為你收集整理的mysql 10进制转2进制_Oracle 10进制转换2进制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。