亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Oracle中的二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制相

系統(tǒng) 2077 0

Oracle中的二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制相互轉(zhuǎn)換函數(shù)

?

今天在網(wǎng)上看到一篇關(guān)于在oracle中對(duì)各種進(jìn)制數(shù)進(jìn)行轉(zhuǎn)換的帖子,覺得不錯(cuò),也比較全面,幾乎涵蓋了經(jīng)常用到的所有轉(zhuǎn)換。轉(zhuǎn)過來學(xué)習(xí)一下,也方便以后查詢。

==================================================================================

大家經(jīng)常遇到進(jìn)制轉(zhuǎn)換的問題,網(wǎng)上搜到的轉(zhuǎn)換只是部分十進(jìn)制與其它進(jìn)制的轉(zhuǎn)換,所以我把自己寫的轉(zhuǎn)換函數(shù)提供給大家,4種進(jìn)制共12個(gè)轉(zhuǎn)換函數(shù),雖然有的轉(zhuǎn)換直接使用to_char()和to_number()就可以實(shí)現(xiàn),但我還是把它們整理到一起,使用和查找都方便。

部分函數(shù)需要先創(chuàng)建type_str_agg類型和f_stragg函數(shù)才能使用,這兩個(gè)對(duì)象的代碼也附在之后。

CREATE OR REPLACE PACKAGE pkg_number_trans IS

? FUNCTION f_bin_to_oct(p_str IN VARCHAR2) RETURN VARCHAR2;
??
? FUNCTION f_bin_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2;
??
? FUNCTION f_bin_to_hex(p_str IN VARCHAR2) RETURN VARCHAR2;

? FUNCTION f_oct_to_bin(p_str IN VARCHAR2) RETURN VARCHAR2;
??
? FUNCTION f_oct_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2;

? FUNCTION f_oct_to_hex(p_str IN VARCHAR2) RETURN VARCHAR2;
??
? FUNCTION f_hex_to_bin(p_str IN VARCHAR2) RETURN VARCHAR2;

? FUNCTION f_hex_to_oct(p_str IN VARCHAR2) RETURN VARCHAR2;

? FUNCTION f_hex_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2;
??
? FUNCTION f_dec_to_bin(p_int IN VARCHAR2) RETURN VARCHAR2;

? FUNCTION f_dec_to_oct(p_int IN VARCHAR2) RETURN VARCHAR2;

? FUNCTION f_dec_to_hex(p_int IN VARCHAR2) RETURN VARCHAR2;
??
END pkg_number_trans;
/
CREATE OR REPLACE PACKAGE BODY pkg_number_trans IS


? FUNCTION f_bin_to_oct(p_str IN VARCHAR2) RETURN VARCHAR2 IS
??? ----------------------------------------------------------------------------------------------------------------------
??? -- 對(duì)象名稱: f_bin_to_oct
??? -- 對(duì)象描述: 二進(jìn)制轉(zhuǎn)換八進(jìn)制
??? -- 輸入?yún)?shù): p_str 二進(jìn)制字符串
??? -- 返回結(jié)果: 八進(jìn)制字符串
??? -- 測試用例: SELECT pkg_number_trans.f_bin_to_oct('11110001010') FROM dual;
??? -- 備??? 注: 需要定義f_stragg函數(shù)和type_str_agg類型
??? ----------------------------------------------------------------------------------------------------------------------
??? v_return VARCHAR2(4000);
??? v_bin??? VARCHAR2(4000);
? BEGIN
??? v_bin := substr('00' || p_str, -3 * ceil(length(p_str) / 3));
??? SELECT f_stragg(data1) INTO v_return
????? FROM (SELECT (CASE upper(substr(v_bin, (rownum - 1) * 3 + 1, 3))
???????????????????? WHEN '000' THEN '0'
???????????????????? WHEN '001' THEN '1'
???????????????????? WHEN '010' THEN '2'
???????????????????? WHEN '011' THEN '3'
???????????????????? WHEN '100' THEN '4'
???????????????????? WHEN '101' THEN '5'
???????????????????? WHEN '110' THEN '6'
???????????????????? WHEN '111' THEN '7'
?????????????????? END) data1
????????????? FROM dual
??????????? CONNECT BY rownum <= length(v_bin) / 3);
??? RETURN v_return;
? EXCEPTION
??? WHEN OTHERS THEN
????? RETURN NULL;
? END f_bin_to_oct;

? FUNCTION f_bin_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2 IS
??? ----------------------------------------------------------------------------------------------------------------------
??? -- 對(duì)象名稱: f_bin_to_dec
??? -- 對(duì)象描述: 二進(jìn)制轉(zhuǎn)換十進(jìn)制
??? -- 輸入?yún)?shù): p_str 二進(jìn)制字符串
??? -- 返回結(jié)果: 十進(jìn)制字符串
??? -- 測試用例: SELECT pkg_number_trans.f_bin_to_dec('11110001010') FROM dual;
??? ----------------------------------------------------------------------------------------------------------------------
??? v_return? VARCHAR2(4000);
? BEGIN
??? SELECT SUM(data1) INTO v_return
????? FROM (SELECT substr(p_str, rownum, 1) * power(2, length(p_str) - rownum) data1
????????????? FROM dual
??????????? CONNECT BY rownum <= length(p_str));
??? RETURN v_return;
? EXCEPTION
??? WHEN OTHERS THEN
????? RETURN NULL;
? END f_bin_to_dec;

? FUNCTION f_bin_to_hex(p_str IN VARCHAR2) RETURN VARCHAR2 IS
??? ----------------------------------------------------------------------------------------------------------------------
??? -- 對(duì)象名稱: f_bin_to_hex
??? -- 對(duì)象描述: 二進(jìn)制轉(zhuǎn)換十六進(jìn)制
??? -- 輸入?yún)?shù): p_str 二進(jìn)制字符串
??? -- 返回結(jié)果: 十六進(jìn)制字符串
??? -- 測試用例: SELECT pkg_number_trans.f_bin_to_oct('11110001010') FROM dual;
??? -- 備??? 注: 需要定義f_stragg函數(shù)和type_str_agg類型
??? ----------------------------------------------------------------------------------------------------------------------
??? v_return VARCHAR2(4000);
??? v_bin??? VARCHAR2(4000);
? BEGIN
??? v_bin := substr('000' || p_str, -4 * ceil(length(p_str) / 4));
??? SELECT f_stragg(data1) INTO v_return
????? FROM (SELECT (CASE upper(substr(v_bin, (rownum - 1) * 4 + 1, 4))
???????????????????? WHEN '0000' THEN '0'
???????????????????? WHEN '0001' THEN '1'
???????????????????? WHEN '0010' THEN '2'
???????????????????? WHEN '0011' THEN '3'
???????????????????? WHEN '0100' THEN '4'
???????????????????? WHEN '0101' THEN '5'
???????????????????? WHEN '0110' THEN '6'
???????????????????? WHEN '0111' THEN '7'
???????????????????? WHEN '1000' THEN '8'
???????????????????? WHEN '1001' THEN '9'
???????????????????? WHEN '1010' THEN 'A'
???????????????????? WHEN '1011' THEN 'B'
???????????????????? WHEN '1100' THEN 'C'
???????????????????? WHEN '1101' THEN 'D'
???????????????????? WHEN '1110' THEN 'E'
???????????????????? WHEN '1111' THEN 'F'
?????????????????? END) data1
????????????? FROM dual
??????????? CONNECT BY rownum <= length(v_bin) / 4);
??? RETURN v_return;
? EXCEPTION
??? WHEN OTHERS THEN
????? RETURN NULL;
? END f_bin_to_hex;

? FUNCTION f_oct_to_bin(p_str IN VARCHAR2) RETURN VARCHAR2 IS
??? ----------------------------------------------------------------------------------------------------------------------
??? -- 對(duì)象名稱: f_oct_to_bin
??? -- 對(duì)象描述: 八進(jìn)制轉(zhuǎn)換二進(jìn)制
??? -- 輸入?yún)?shù): p_str 八進(jìn)制字符串
??? -- 返回結(jié)果: 二進(jìn)制字符串
??? -- 測試用例: SELECT pkg_number_trans.f_oct_to_bin('3612') FROM dual;
??? -- 備??? 注: 需要定義f_stragg函數(shù)和type_str_agg類型
??? ----------------------------------------------------------------------------------------------------------------------
??? v_return VARCHAR2(4000);
? BEGIN
??? SELECT to_char(to_number(f_stragg(data1))) INTO v_return
????? FROM (SELECT (CASE upper(substr(p_str, rownum, 1))
???????????????????? WHEN '0' THEN '000'
???????????????????? WHEN '1' THEN '001'
???????????????????? WHEN '2' THEN '010'
???????????????????? WHEN '3' THEN '011'
???????????????????? WHEN '4' THEN '100'
???????????????????? WHEN '5' THEN '101'
???????????????????? WHEN '6' THEN '110'
???????????????????? WHEN '7' THEN '111'
?????????????????? END) data1
????????????? FROM dual
??????????? CONNECT BY rownum <= length(p_str));
??? RETURN v_return;
? EXCEPTION
??? WHEN OTHERS THEN
????? RETURN NULL;
? END f_oct_to_bin;

? FUNCTION f_oct_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2 IS
??? ----------------------------------------------------------------------------------------------------------------------
??? -- 對(duì)象名稱: f_oct_to_dec
??? -- 對(duì)象描述: 八進(jìn)制轉(zhuǎn)換十進(jìn)制
??? -- 輸入?yún)?shù): p_str 八進(jìn)制字符串
??? -- 返回結(jié)果: 十進(jìn)制字符串
??? -- 測試用例: SELECT pkg_number_trans.f_oct_to_dec('3612') FROM dual;
??? ----------------------------------------------------------------------------------------------------------------------
??? v_return? VARCHAR2(4000);
? BEGIN
??? SELECT SUM(data1) INTO v_return
????? FROM (SELECT substr(p_str, rownum, 1) * power(8, length(p_str) - rownum) data1
????????????? FROM dual
??????????? CONNECT BY rownum <= length(p_str));
??? RETURN v_return;
? EXCEPTION
??? WHEN OTHERS THEN
????? RETURN NULL;
? END f_oct_to_dec;
??
? FUNCTION f_oct_to_hex(p_str IN VARCHAR2) RETURN VARCHAR2 IS
??? ----------------------------------------------------------------------------------------------------------------------
??? -- 對(duì)象名稱: f_oct_to_bin
??? -- 對(duì)象描述: 八進(jìn)制轉(zhuǎn)換十六進(jìn)制
??? -- 輸入?yún)?shù): p_str 八進(jìn)制字符串
??? -- 返回結(jié)果: 十六進(jìn)制字符串
??? -- 測試用例: SELECT pkg_number_trans.f_oct_to_hex('3612') FROM dual;
??? ----------------------------------------------------------------------------------------------------------------------
??? v_return VARCHAR2(4000);
??? v_bin??? VARCHAR2(4000);
? BEGIN
??? SELECT pkg_number_trans.f_oct_to_bin(p_str) INTO v_bin FROM dual;
??? SELECT pkg_number_trans.f_bin_to_hex(v_bin) INTO v_return FROM dual;
??? RETURN v_return;
? EXCEPTION
??? WHEN OTHERS THEN
????? RETURN NULL;
? END f_oct_to_hex;

? FUNCTION f_dec_to_bin(p_int IN VARCHAR2) RETURN VARCHAR2 IS
??? ----------------------------------------------------------------------------------------------------------------------
??? -- 對(duì)象名稱: f_dec_to_bin
??? -- 對(duì)象描述: 十進(jìn)制轉(zhuǎn)換二進(jìn)制
??? -- 輸入?yún)?shù): p_str 十進(jìn)制字符串
??? -- 返回結(jié)果: 二進(jìn)制字符串
??? -- 測試用例: SELECT pkg_number_trans.f_dec_to_bin('1930') FROM dual;
??? ----------------------------------------------------------------------------------------------------------------------
??? v_return VARCHAR2(4000);
??? v_hex??? VARCHAR2(4000);
? BEGIN
??? SELECT pkg_number_trans.f_dec_to_hex(p_int) INTO v_hex FROM dual;
??? SELECT pkg_number_trans.f_hex_to_bin(v_hex) INTO v_return FROM dual;
??? RETURN v_return;
? EXCEPTION
??? WHEN OTHERS THEN
????? RETURN NULL;
? END f_dec_to_bin;
??
? FUNCTION f_dec_to_oct(p_int IN VARCHAR2) RETURN VARCHAR2 IS
??? ----------------------------------------------------------------------------------------------------------------------
??? -- 對(duì)象名稱: f_dec_to_oct
??? -- 對(duì)象描述: 十進(jìn)制轉(zhuǎn)換八進(jìn)制
??? -- 輸入?yún)?shù): p_str 十進(jìn)制字符串
??? -- 返回結(jié)果: 八進(jìn)制字符串
??? -- 測試用例: SELECT pkg_number_trans.f_dec_to_oct('1930') FROM dual;
??? ----------------------------------------------------------------------------------------------------------------------
??? v_return VARCHAR2(4000);
??? v_bin??? VARCHAR2(4000);
? BEGIN
??? SELECT pkg_number_trans.f_dec_to_bin(p_int) INTO v_bin FROM dual;
??? v_bin := substr('00' || v_bin, -3 * ceil(length(v_bin) / 3));
??? SELECT f_stragg(data1) INTO v_return
????? FROM (SELECT (CASE upper(substr(v_bin, (rownum - 1) * 3 + 1, 3))
???????????????????? WHEN '000' THEN '0'
???????????????????? WHEN '001' THEN '1'
???????????????????? WHEN '010' THEN '2'
???????????????????? WHEN '011' THEN '3'
???????????????????? WHEN '100' THEN '4'
???????????????????? WHEN '101' THEN '5'
???????????????????? WHEN '110' THEN '6'
???????????????????? WHEN '111' THEN '7'
?????????????????? END) data1
????????????? FROM dual
??????????? CONNECT BY rownum <= length(v_bin) / 3);
??? RETURN v_return;
? EXCEPTION
??? WHEN OTHERS THEN
????? RETURN NULL;
? END f_dec_to_oct;
??
? FUNCTION f_dec_to_hex(p_int IN VARCHAR2) RETURN VARCHAR2 IS
??? ----------------------------------------------------------------------------------------------------------------------
??? -- 對(duì)象名稱: f_dec_to_oct
??? -- 對(duì)象描述: 十進(jìn)制轉(zhuǎn)換十六進(jìn)制
??? -- 輸入?yún)?shù): p_str 十進(jìn)制字符串
??? -- 返回結(jié)果: 十六進(jìn)制字符串
??? -- 測試用例: SELECT pkg_number_trans.f_dec_to_hex('1930') FROM dual;
??? ----------------------------------------------------------------------------------------------------------------------
??? v_return VARCHAR2(4000);
? BEGIN
??? SELECT upper(TRIM(to_char(p_int, 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'))) INTO v_return FROM dual;
??? RETURN v_return;
? EXCEPTION
??? WHEN OTHERS THEN
????? RETURN NULL;
? END f_dec_to_hex;
??
? FUNCTION f_hex_to_bin(p_str IN VARCHAR2) RETURN VARCHAR2 IS
??? ----------------------------------------------------------------------------------------------------------------------
??? -- 對(duì)象名稱: f_dec_to_oct
??? -- 對(duì)象描述: 十六進(jìn)制轉(zhuǎn)換二進(jìn)制
??? -- 輸入?yún)?shù): p_str 十六進(jìn)制字符串
??? -- 返回結(jié)果: 二進(jìn)制字符串
??? -- 測試用例: SELECT pkg_number_trans.f_hex_to_oct('78A') FROM dual;
??? ----------------------------------------------------------------------------------------------------------------------
??? v_return VARCHAR2(4000);
? BEGIN
??? SELECT to_char(to_number(f_stragg(data1))) INTO v_return
????? FROM (SELECT (CASE upper(substr(p_str, rownum, 1))
???????????????????? WHEN '0' THEN '0000'
???????????????????? WHEN '1' THEN '0001'
???????????????????? WHEN '2' THEN '0010'
???????????????????? WHEN '3' THEN '0011'
???????????????????? WHEN '4' THEN '0100'
???????????????????? WHEN '5' THEN '0101'
???????????????????? WHEN '6' THEN '0110'
???????????????????? WHEN '7' THEN '0111'
???????????????????? WHEN '8' THEN '1000'
???????????????????? WHEN '9' THEN '1001'
???????????????????? WHEN 'A' THEN '1010'
???????????????????? WHEN 'B' THEN '1011'
???????????????????? WHEN 'C' THEN '1100'
???????????????????? WHEN 'D' THEN '1101'
???????????????????? WHEN 'E' THEN '1110'
???????????????????? WHEN 'F' THEN '1111'
?????????????????? END) data1
????????????? FROM dual
??????????? CONNECT BY rownum <= length(p_str));
??? RETURN v_return;
? EXCEPTION
??? WHEN OTHERS THEN
????? RETURN NULL;
? END f_hex_to_bin;
??
? FUNCTION f_hex_to_oct(p_str IN VARCHAR2) RETURN VARCHAR2 IS
??? ----------------------------------------------------------------------------------------------------------------------
??? -- 對(duì)象名稱: f_dec_to_oct
??? -- 對(duì)象描述: 十六進(jìn)制轉(zhuǎn)換八進(jìn)制
??? -- 輸入?yún)?shù): p_str 十六進(jìn)制字符串
??? -- 返回結(jié)果: 八進(jìn)制字符串
??? -- 測試用例: SELECT pkg_number_trans.f_hex_to_oct('78A') FROM dual;
??? ----------------------------------------------------------------------------------------------------------------------
??? v_return VARCHAR2(4000);
??? v_bin??? VARCHAR2(4000);
? BEGIN
??? SELECT pkg_number_trans.f_hex_to_bin(p_str) INTO v_bin FROM dual;
??? SELECT pkg_number_trans.f_bin_to_oct(v_bin) INTO v_return FROM dual;
??? RETURN v_return;
? EXCEPTION
??? WHEN OTHERS THEN
????? RETURN NULL;
? END f_hex_to_oct;
??
? FUNCTION f_hex_to_dec(p_str IN VARCHAR2) RETURN VARCHAR2 IS
??? ----------------------------------------------------------------------------------------------------------------------
??? -- 對(duì)象名稱: f_hex_to_dec
??? -- 對(duì)象描述: 十六進(jìn)制轉(zhuǎn)換十進(jìn)制
??? -- 輸入?yún)?shù): p_str 十六進(jìn)制字符串
??? -- 返回結(jié)果: 十進(jìn)制字符串
??? -- 測試用例: SELECT pkg_number_trans.f_hex_to_dec('78A') FROM dual;
??? ----------------------------------------------------------------------------------------------------------------------
??? v_return? VARCHAR2(4000);
? BEGIN
??? SELECT SUM(data1) INTO v_return
????? FROM (SELECT (CASE upper(substr(p_str, rownum, 1))
???????????????????? WHEN 'A' THEN '10'
???????????????????? WHEN 'B' THEN '11'
???????????????????? WHEN 'C' THEN '12'
???????????????????? WHEN 'D' THEN '13'
???????????????????? WHEN 'E' THEN '14'
???????????????????? WHEN 'F' THEN '15'
???????????????????? ELSE substr(p_str, rownum, 1)
?????????????????? END) * power(16, length(p_str) - rownum) data1
????????????? FROM dual
??????????? CONNECT BY rownum <= length(p_str));
??? RETURN v_return;
? EXCEPTION
??? WHEN OTHERS THEN
????? RETURN NULL;
? END f_hex_to_dec;
??
END pkg_number_trans;
/


CREATE OR REPLACE TYPE type_str_agg AS OBJECT
(
? total VARCHAR2(4000),

? STATIC FUNCTION odciaggregateinitialize(sctx IN OUT type_str_agg)
??? RETURN NUMBER,

? MEMBER FUNCTION odciaggregateiterate
? (
??? SELF? IN OUT type_str_agg,
??? VALUE IN VARCHAR2
? ) RETURN NUMBER,

? MEMBER FUNCTION odciaggregateterminate
? (
??? SELF??????? IN type_str_agg,
??? returnvalue OUT VARCHAR2,
??? flags?????? IN NUMBER
? ) RETURN NUMBER,

? MEMBER FUNCTION odciaggregatemerge
? (
??? SELF IN OUT type_str_agg,
??? ctx2 IN type_str_agg
? ) RETURN NUMBER
)
/
CREATE OR REPLACE TYPE BODY type_str_agg IS

? STATIC FUNCTION odciaggregateinitialize(sctx IN OUT type_str_agg)
??? RETURN NUMBER IS
? BEGIN
??? sctx := type_str_agg(NULL);
??? RETURN odciconst.success;
? END;

? MEMBER FUNCTION odciaggregateiterate
? (
??? SELF? IN OUT type_str_agg,
??? VALUE IN VARCHAR2
? ) RETURN NUMBER IS
? BEGIN
??? SELF.total := SELF.total || VALUE;
??? RETURN odciconst.success;
? END;

? MEMBER FUNCTION odciaggregateterminate
? (
??? SELF??????? IN type_str_agg,
??? returnvalue OUT VARCHAR2,
??? flags?????? IN NUMBER
? ) RETURN NUMBER IS
? BEGIN
??? returnvalue := SELF.total;
??? RETURN odciconst.success;
? END;

? MEMBER FUNCTION odciaggregatemerge
? (
??? SELF IN OUT type_str_agg,
??? ctx2 IN type_str_agg
? ) RETURN NUMBER IS
? BEGIN
??? SELF.total := SELF.total || ctx2.total;
??? RETURN odciconst.success;
? END;

END;
/


CREATE OR REPLACE FUNCTION f_stragg(p_input VARCHAR2) RETURN VARCHAR2
? PARALLEL_ENABLE
? AGGREGATE USING type_str_agg;
/

Oracle中的二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制相互轉(zhuǎn)換函數(shù)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 亚洲一区二区三区在线免费观看 | 午夜精品久久久久久久90蜜桃 | 国产福利在线观看 | 国产成+人欧美+综合在线观看 | 久久成人国产精品青青 | 亚洲国产成人久久综合一区77 | 东北老妇露脸xxxxx | 日本一级在线播放线观看免 | 亚洲精品一区二区三区婷婷 | 337p日本大胆欧美人术艺术6 | 麻豆久久精品免费看国产 | 亚洲qingse中文在线 | 看真人视频一级毛片 | 亚洲最新在线 | 亚洲国内精品久久 | 毛片一级| 一级毛片真人免费观看 | 亚洲精品久久久久久久网站 | 欧美亚洲国产精品 | 美女被爆羞羞视频网站视频 | 亚洲国产成人久久精品影视 | 99久久精品国产一区二区三区 | 国产午夜永久福利视频在线观看 | 日本免费人做人一区在线观看 | 国产一区二区三区日韩 | 毛片免费观看网址 | 久久亚洲国产最新网站 | 精品九九九 | 成人私人影院www片免费高清 | 亚洲国产99999在线精品一区 | 宅男在线看片 | 亚洲国产精品乱码一区二区三区 | 99热久久精里都是精品6 | 婷婷综合激情五月中文字幕 | 中文字幕在线观看国产 | 午夜影院免费在线观看 | 久久久久国产精品免费看 | 国产99久久精品 | 97成人资源 | 91一区 | 国内精品综合九九久久精品 |