青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

franksunny的個人技術(shù)空間
獲得人生中的成功需要的專注與堅持不懈多過天才與機(jī)會。 ——C.W. Wendte

 

描述符<>轉(zhuǎn)換

 

業(yè)余有時候把一個事情當(dāng)作任務(wù)來做的時候,往往會很受限制,就象這篇文檔,上次寫了個上篇,關(guān)于描述符的下篇,自己就遲遲沒有勇氣和時間寫完,好幾次都想靜下心來好好完成它,但是都未能如愿,可如果不寫顯然我也不好意思寫其它的一些東西,閑話提到這里,花了幾天業(yè)余時間總算是完成了,該文質(zhì)量不足之處還望讀者您見諒。

 

通過前面關(guān)于描述符概念和使用的簡單描述,下面我們直接進(jìn)入描述符轉(zhuǎn)換的主題。

雖然描述符有五類,但是作為描述符變量用的,只有三類即棧描述符、堆描述符、指針描述符。所以本文所述描述符的轉(zhuǎn)換也只是在這三種類型間展開,這三類描述符之間的互相轉(zhuǎn)換其實可以用下面這種偽代碼方式給出:

TBuf<20> iBuf;

TPtr iPtr((const_cast<TUint16*>(iBuf.Ptr())),iBuf.Length(), iBuf.Length());

HBufC     *iHbuf;

iBuf = iPtr;

iBuf = iHbuf->Des();

iPtr.Set((const_cast<TUint16*>(iBuf.Ptr())),iBuf.Length(), iBuf.Length());

由上面可知指針型可以起堆型和棧型描述符的中間過渡的橋梁作用。

 

不可修改向可修改描述符的轉(zhuǎn)換

原則1:通過不可修改描述符類內(nèi)的Des()函數(shù),將不可修改的描述符轉(zhuǎn)換成可修改的指針描述符

示例1TBufC轉(zhuǎn)換成TPtr

       _LIT(KText, "Test Data");

       TBufC<10> NBuf ( KText );

       TPtr     Pointer = NBuf.Des();

示例2HBufC轉(zhuǎn)換成TPtr

HBufC * Buf = HBufC::NewL(15);

       _LIT (KText , "Test Text");

       *Buf = KText;

       TPtr Pointer = Buf->Des();

 

原則2:通過TPtr的構(gòu)造函數(shù)或Set()函數(shù)可以將TPtrC描述轉(zhuǎn)換為可修改的指針描述符

示例3TPtrCTPtr

const TText * text1 = _S("Hello World\n");

TPtrC Ptr1(text1);

TPtrC Ptr2(Ptr1);

//可以通過構(gòu)造函數(shù)

TPtr Ptr3((TUint16 *)(Ptr1.Ptr()), Ptr1.Length());

//也可以通過Set()函數(shù)

Ptr3.Set((TUint16 *)(Ptr1.Ptr()),Ptr1.Length(), Ptr1.Length());

 

8位和16位之間的描述符轉(zhuǎn)換

8位到16位的描述符轉(zhuǎn)換

原則1:通過將兩個8位描述符的內(nèi)容合并為一個16位描述符的方法實現(xiàn)內(nèi)存不動,內(nèi)存塊類型強轉(zhuǎn)(我稱其為保留描述符字節(jié)大小方法)。

示例48bit To 16bit保留描述符字節(jié)大小方法1

_LIT8(KText , "Test Text");

TBuf8<20> iBuf8(KText);//描述符實際占用了9個字節(jié)98位描述符

TBuf<20> iBuf16;

//實現(xiàn)內(nèi)存塊的強轉(zhuǎn)

TPtrC16 ptr16(reinterpret_cast<const TUint16*>(iBuf8.Ptr()), (iBuf8.Length()/2));

//真實的內(nèi)存不動已經(jīng)結(jié)束,這里是重新申請了一塊內(nèi)存并實現(xiàn)內(nèi)存賦值拷貝

iBuf16 = ptr16;//描述符實際占用了8個字節(jié)416位描述符,導(dǎo)致數(shù)據(jù)丟失

由上面的這個例子明顯是丟失了數(shù)據(jù)了,原因就出在設(shè)置長度時用了(iBuf8.Length()/2),為了剔除錯誤,我后來改了一個新的示例6

示例68bit To 16bit保留描述符字節(jié)大小方法2(由于上例用了TPtrC,所以該例使用TPtr指針,以擴(kuò)展應(yīng)用)

_LIT8(KText , "Test Text");

TBuf8<20> iBuf8;

iBuf8.FillZ(20);

iBuf8 = KText;//實際占用9字節(jié)9描述符

TBuf<20> iBuf16;

TPtr ptr16(reinterpret_cast<TUint16*>(const_cast<TUint8*>(iBuf8.Ptr())),
   ((iBuf8.Length()+1)/2),((iBuf8.Length()+1)/2));

iBuf16 = ptr16;//實際占用10字節(jié)5描述符,但是第10個字節(jié)為0零值,也即9字節(jié)大小有用

注:其實這里用堆描述符來說明可能更好些,但是本人在調(diào)試過程中為了能夠看到調(diào)試的效果,所以用了TBuf;而且個人覺得通常這種方法主要在文件讀取等實際過程中用到,如果要轉(zhuǎn)換為16位的話,肯定是偶數(shù)大小的8位描述符。

 

原則2:重新構(gòu)建內(nèi)存塊使用描述符的copy函數(shù)將8位字符的高字節(jié)置為0低字節(jié)不變,進(jìn)行拷貝轉(zhuǎn)換(我稱其為保留描述符長度方法)。

示例7

_LIT8(KText , "Test Text");

TBuf8<20> iBuf8(KText);//實際占用了9個描述符9個字節(jié)

TBuf<20> iBuf16;

iBuf16.Copy(iBuf8);//實際占用了9個描述符18個字節(jié)

 

原則3:使用charconv.lib內(nèi)的API函數(shù)8位的UTF8描述符轉(zhuǎn)換為16位的Unicode 描述符

CnvUtfConverter::ConvertToUnicodeFromUtf8(iBuf, iBuf8);

注:在使用這種方法時除了包含charconv.lib庫,還應(yīng)該包含utf.h頭文件

 

原則4:使用GBK轉(zhuǎn)Unicode的方法

注:原則34是我在實際中常用的方法,涉及到各種編碼的問題,暫時不做大的展開,下次使用中文的整理時再展開。

 

16位到8位的描述符轉(zhuǎn)換

原則1:通過將一個16位描述符拆分為兩個8位描述符的方法實現(xiàn)內(nèi)存不動,內(nèi)存塊類型強轉(zhuǎn)(我稱其為保留描述符字節(jié)大小方法)

示例8

_LIT(KText , "Test 文本");

TBuf<20> iBuf(KText);//描述符實際占用了14個字節(jié)716位描述符                            //實現(xiàn)內(nèi)存塊的強轉(zhuǎn)

TPtrC8 ptr8(reinterpret_cast<const TUint8*>(iBuf.Ptr()), (iBuf.Size()));

//真實的內(nèi)存不動已經(jīng)結(jié)束,這里是重新申請了一塊內(nèi)存并實現(xiàn)內(nèi)存賦值拷貝

TBuf8<20> iBuf8;

iBuf8 = ptr8;//描述符實際占用了14個字節(jié)148位描述符

以上

原則2:重新構(gòu)建內(nèi)存塊使用描述符的copy函數(shù)將16位描述符的,進(jìn)行拷貝轉(zhuǎn)換(我稱其為保留描述符長度方法)。

示例9

_LIT(KText , "Test 文本");

TBuf<20> iBuf(KText);// 描述符實際占用了14個字節(jié)716位描述符

TBuf8<20> iBuf8;

iBuf8.Copy(iBuf);//描述符實際占用了7個字節(jié)7個描述符,非ASCII字符值轉(zhuǎn)為1

注:該種方法在純ASCII碼的轉(zhuǎn)換時可行,其它數(shù)據(jù)大于255的時候就會丟失數(shù)據(jù)。

 

原則3:使用charconv.lib內(nèi)的API函數(shù)16位的Unicode描述符轉(zhuǎn)換為8位的UTF8描述符。

CnvUtfConverter::ConvertFromUnicodeToUtf8(iBuf8, iBuf);

 

原則4:使用Unicode轉(zhuǎn)GBK的方法

同前面理,以后我會再講到。

 

由于最近做通信模塊時組解包用的比較多,為此經(jīng)常會將memcpystrcpysprintfsscanf等函數(shù)在char字符串和描述符串內(nèi)存塊之間的直接使用,個人覺得描述符一旦取得了后面數(shù)據(jù)區(qū)的首指針,那么內(nèi)存塊的這些操作沒有什么好展開,直接用函數(shù)大家都會,當(dāng)然本人也推薦讀者使用文后的char字符串和Symbian描述符串的轉(zhuǎn)換方法。

 

在整理過程種,也有其它類型與描述符的轉(zhuǎn)換,我就摘錄在本文后面作為mark和備查:

1.    TTime轉(zhuǎn)TBuf

TBuf<32> theTime;//存儲轉(zhuǎn)換后的時間

TTime tt;

tt.HomeTime();

_LIT(KTimeFormat,"%Y%M%D%1-%2-%3 %H:%T:%S");//格式為:2006-03-04 12:12:12

tt.FormatL(theTime,KTimeFormat);

 

2.    TDateTime轉(zhuǎn)TBuf

TTime currentTime;//聲明一個TTime類型

currentTime.HomeTime();//設(shè)置TTime為當(dāng)前時間

TDateTime tdt=currentTime.DateTime();//TTime  --->  TdateTime

TBuf<32> tmp;//存儲轉(zhuǎn)換完的Buf

tmp.AppendNum(tdt.Year());//AppendNum()方法將一個Tint加入到TBuf中。

_LIT(gang,"-");//聲明一個橫線分隔年月日,同樣可聲明冒號分隔小時分秒

tmp.Append(gang);

tmp.AppendNum(tdt.Month());

tmp.Append(gang);

tmp.AppendNum(tdt.Day());//…………時分秒的轉(zhuǎn)換同上

 

3.    TBufTint互轉(zhuǎn)型

// 15位數(shù)字

TInt iNum1(123456789009876);

// TInt轉(zhuǎn)TBuf

iBuf.Num(iNum1);//當(dāng)buf只用來轉(zhuǎn)Tint可以使用AppendNum,但是性質(zhì)是不一樣的

 

// 使用iBuf包含的內(nèi)容創(chuàng)建TLex對象

TLex iLex(iBuf);

TInt iNum2;

//TBuf轉(zhuǎn)TInt

iLex.Val(iNum2);// Num2現(xiàn)在包含了15位數(shù)字

 

4.    TBuf轉(zhuǎn)TDateTime

將長的TBuf截成小段,分別是年月日時分秒,通過下面TBuf轉(zhuǎn)TInt ,再分別把轉(zhuǎn)換成TInt的年月日取出,通過TDateTimesetYear(),setMonth()等方法將時間set進(jìn)TdateTime

 

5. .symbian串轉(zhuǎn)換成char

char* p = NULL;

TBuf8<20> buf( _L( "aaaaa" ) );

p = (char *)buf.Ptr();

 

6.char串轉(zhuǎn)換成symbian

char* cc = "aaaa";

TPtrC8 a;

a.Set( (const TUint8*)cc , strlen(cc) );

 

本文參考了一些論壇資料,至于資料索引,我也無法給出,望讀者見諒,有錯誤之處還望指出。

posted on 2007-11-28 22:51 frank.sunny 閱讀(4990) 評論(15)  編輯 收藏 引用 所屬分類: symbian 開發(fā)

FeedBack:
# re: 描述符轉(zhuǎn)換
2007-11-29 22:25 | helixapp
真的挺全的 贊一個  回復(fù)  更多評論
  
# re: 描述符轉(zhuǎn)換
2008-03-03 15:37 | myh
博主的示例6:8bit To 16bit保留描述符字節(jié)大小方法2(由于上例用了TPtrC,所以該例使用TPtr指針,以擴(kuò)展應(yīng)用)


_LIT8(KText , "Test Text");

TBuf8<20> iBuf8;

iBuf8.FillZ(20);

iBuf8 = KText;//實際占用9字節(jié)9描述符

TBuf<20> iBuf16;

TPtr ptr16(reinterpret_cast<TUint16*>(const_cast<TUint8*>(iBuf8.Ptr())),
((iBuf8.Length()+1)/2),((iBuf8.Length()+1)/2));

iBuf16 = ptr16;//

// 本人在Draw函數(shù)中引用了你上面的代碼,,同時調(diào)用下面語句
gc.DrawText(iBuf16,TPoint(0,20));
在模擬器上顯示的是亂碼,,不知為什么,,
  回復(fù)  更多評論
  
# re: 描述符轉(zhuǎn)換
2008-03-04 10:50 | frank.sunny
@myh
好久沒來更新了,今天在郵箱里看到來自博客園的郵件感覺好親切

謝謝myh兄,還自己去做過實驗,其實8位到16位的前兩個原則只是保證在內(nèi)存塊中數(shù)據(jù)一致,不放你可以自己調(diào)試看看內(nèi)存里面內(nèi)容,但是你在顯示的時候8位和16位的編碼不一樣自然就會出現(xiàn)亂碼了

其實這個問題還是涉及編碼的問題,由于后來項目緊就一直沒有更新博客了,myh兄可以采用原則3和4,肯定不會出現(xiàn)亂碼的,并且如果是中文,在模擬器上如果采用了中文SDK是不會出現(xiàn)亂碼的,在手機(jī)上可能還會出現(xiàn)亂碼,這個只能以后詳細(xì)解說了

再次感謝myh兄參與討論


  回復(fù)  更多評論
  
# re: 描述符轉(zhuǎn)換
2008-03-20 11:26 | myh
多謝回復(fù),,最近在學(xué)習(xí)真機(jī)上中文顯示問題,,感覺比較復(fù)雜,,

用兩種方法實現(xiàn)了真機(jī)上中文顯示,,
1、CnvUtfConverter::ConvertToUnicodeFromUtf8(iBuf, iBuf8);

2、CCnvCharacterSetConverter中的ConvertToUnicode

但第一種方法存在文件保存時的格式問題,,選擇UTF-8 無 BOM格式,,當(dāng)文件中的內(nèi)容改變時又會出問題,,
能不能把整個項目發(fā)到你的郵箱里,,幫我看一下,,

另外第二種方法比較耗時,,但比較方便,,  回復(fù)  更多評論
  
# re: 描述符轉(zhuǎn)換
2008-03-20 11:58 | frank.sunny
閣下連耗時與否都做過比較了,非常感激,但是不知道具體是怎樣耗時法,本人未做過這方面的實驗。
照理轉(zhuǎn)成utf8應(yīng)該無問題啊,不知道怎么聯(lián)系閣下,我的郵箱是:frank.sunny@163.com
  回復(fù)  更多評論
  
# re: 描述符轉(zhuǎn)換
2008-03-20 12:03 | myh

第一種方法,,
_LIT8(KOpentoMap8, "返回我的最愛");
會報以下錯
error C2001: 常數(shù)中有換行符
fatal error C1057: 宏展開中遇到意外的文件結(jié)束

但是將文字改成以下幾種情況又不會報錯
1、_LIT8(KOpeap8, "返回我的最");
2、_LIT8(KOpeap8, "城市設(shè)置成功");
3、_LIT8(KOpeap8, "返回我的最w");


  回復(fù)  更多評論
  
# re: 描述符轉(zhuǎn)換
2008-03-20 12:12 | frank.sunny
不知道你是怎么考慮的,照理“_LIT8(KOpentoMap8, "返回我的最愛");”這個語句應(yīng)該是“_LIT(KOpentoMap8, "返回我的最愛");”吧 ?

我不是很清楚你要實現(xiàn)什么目的


  回復(fù)  更多評論
  
# re: 描述符轉(zhuǎn)換
2008-03-20 12:50 | myh
我定義了一個專門存放字符常量的頭文件,,Common.h

其中有_LIT8(KOpentoMap8, "返回我的最愛");
ccp文件中調(diào)用
CnvUtfConverter::ConvertToUnicodeFromUtf8(iBuf, KOpentoMap8);


最后調(diào)用DrawText; 以顯示中文,,“返回我的最愛”
  回復(fù)  更多評論
  
# re: 描述符轉(zhuǎn)換
2008-03-20 13:27 | frank.sunny
不好意思,剛剛午睡下
你這樣是不對的,“_LIT8(KOpentoMap8, "返回我的最愛");"中的"返回我的最愛"是GBK編碼的,而_LIT8并非轉(zhuǎn)化為utf-8的,仍然是GBK編碼的。這個在symbian中現(xiàn)在一般不推薦使用,只針對ASCII碼時是適用的。
關(guān)于GBK轉(zhuǎn)化到Unicode另外有代碼實現(xiàn)的,也怪自己偷懶老是沒有整理這個東西,我有時間整理下吧。  回復(fù)  更多評論
  
# re: 描述符轉(zhuǎn)換
2008-03-20 13:58 | myh
沒事,,



_LIT8(KOpentoMap8, "返回我的最愛");"中的"返回我的最愛"是GBK編碼的,

我已經(jīng)將文件Commom.h頭文件存為UTF-8 無 BOM 格式 了,,所以

返回我的最愛 應(yīng)該是UTF-8 無 BOM 編碼了,,  回復(fù)  更多評論
  
# re: 描述符轉(zhuǎn)換
2008-03-20 14:28 | frank.sunny
不知道閣下如何聯(lián)系,想問下無bom和有bom具體是什么關(guān)系啊
我不懂呢,查了下有bom多了內(nèi)容為“FFFE”,對吧,但是有什么用,能告知下嗎  回復(fù)  更多評論
  
# re: 描述符轉(zhuǎn)換
2008-03-20 15:20 | myh
644621379

其實我也不太懂,,昨天看到的,,你加我吧,,咱們QQ聊,,  回復(fù)  更多評論
  
# re: 描述符轉(zhuǎn)換
2008-06-25 19:42 | wangfsun
symbian學(xué)習(xí)中,借用了你的一些資料,很感謝  回復(fù)  更多評論
  
# re: 描述符轉(zhuǎn)換
2008-11-28 09:36 | liuhz
很好得文章,非常感謝分享。再接再厲,呵呵。  回復(fù)  更多評論
  
# re: 描述符轉(zhuǎn)換
2011-01-13 11:24 | longteng9
// 15位數(shù)字

TInt iNum1(123456789009876);

// TInt轉(zhuǎn)TBuf

iBuf.Num(iNum1);//當(dāng)buf只用來轉(zhuǎn)Tint時可以使用AppendNum,但是性質(zhì)是不一樣的
我用寫在文件中
TBuf8<20> buf=iBuf.Num(iNum1);
iFile.Write(buf);  回復(fù)  更多評論
  

常用鏈接

留言簿(13)

隨筆分類

個人其它博客

基礎(chǔ)知識鏈接

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            在线欧美不卡| 欧美日韩一区免费| 亚洲国产精彩中文乱码av在线播放| 欧美视频在线观看一区二区| 欧美1区2区| 欧美激情国产精品| 欧美精品成人在线| 欧美精品久久久久久久免费观看| 欧美在线播放高清精品| 欧美一区成人| 久久婷婷一区| 欧美护士18xxxxhd| 国产精品vvv| 国产精品国产三级国产aⅴ入口| 欧美高清视频在线播放| 欧美大尺度在线| 欧美日韩1区2区3区| 欧美私人啪啪vps| 国产伦精品一区二区三区视频黑人| 欧美日韩精品免费观看视频完整 | 欧美福利视频在线| 久久精品日韩欧美| 久久亚洲精品一区二区| 亚洲大片在线观看| 99国内精品久久| 亚洲午夜激情免费视频| 欧美在线www| 欧美成人黑人xx视频免费观看| 久久躁狠狠躁夜夜爽| 欧美sm重口味系列视频在线观看| 久久免费视频在线| 欧美精品一区二区三区一线天视频| 蜜臀99久久精品久久久久久软件| 嫩草影视亚洲| 国产精品看片资源| 黑人巨大精品欧美黑白配亚洲 | 日韩视频一区二区三区| 亚洲综合色自拍一区| 久久久精品tv| 国产精品日韩精品| 狠狠色综合网站久久久久久久| 国内外成人在线| 亚洲欧洲日韩综合二区| 亚洲伊人网站| 欧美黄色免费| 午夜精品福利在线观看| 欧美激情综合五月色丁香| 国产情侣久久| 99re这里只有精品6| 久久久精品久久久久| 亚洲美女av在线播放| 欧美亚洲一级| 欧美视频中文在线看 | 欧美日韩高清在线一区| 国内精品视频一区| 一本色道久久88综合亚洲精品ⅰ| 欧美在线观看视频| 99热在这里有精品免费| 狂野欧美激情性xxxx| 国产日韩亚洲| 亚洲一区二区在线免费观看| 麻豆国产精品一区二区三区 | 欧美精品免费看| 在线观看欧美精品| 久久久久久久尹人综合网亚洲| 亚洲精品韩国| 老牛嫩草一区二区三区日本| 国产自产2019最新不卡| 欧美亚洲在线观看| 亚洲午夜av在线| 国产精品久久77777| 一本色道久久综合狠狠躁篇怎么玩 | 麻豆av一区二区三区久久| 亚洲视频一区在线| 欧美日韩国产专区| 一区二区视频免费在线观看| 久久国产精品免费一区| 亚洲欧美日韩一区在线| 国产乱码精品一区二区三区av| 99精品欧美| 亚洲国产欧美在线人成| 久久爱www.| 国产日韩欧美日韩大片| 欧美在线看片| 久久精品成人一区二区三区| 一区精品在线| 欧美成人精品三级在线观看| 欧美巨乳波霸| 亚洲欧洲av一区二区| 99精品热6080yy久久| 亚洲黄色一区二区三区| 美女精品国产| 伊人久久大香线蕉综合热线| 久久久另类综合| 久久久国产精品亚洲一区| 激情小说亚洲一区| 欧美成ee人免费视频| 欧美高清在线播放| 亚洲视频1区| 亚洲欧美日韩一区| 狠狠色2019综合网| 乱人伦精品视频在线观看| 免费一级欧美在线大片| 9色精品在线| 亚洲综合色自拍一区| 国产喷白浆一区二区三区| 久久伊人精品天天| 农夫在线精品视频免费观看| 亚洲精品一线二线三线无人区| 嫩草国产精品入口| 欧美精品综合| 久久精品亚洲乱码伦伦中文 | 最近看过的日韩成人| 欧美体内she精视频在线观看| 99国产精品视频免费观看| 亚洲视屏一区| 在线看国产一区| 日韩视频免费大全中文字幕| 国产精品美女久久久| 免费视频一区| 欧美三级在线| 久久综合激情| 欧美日韩国产a| 欧美在线视频a| 欧美激情一区二区三区在线视频| 中国日韩欧美久久久久久久久| 一区二区精品在线观看| 亚洲国产精品传媒在线观看 | 免费成人av| 欧美在线免费视频| 免费影视亚洲| 亚洲欧美日本日韩| 女人香蕉久久**毛片精品| 亚洲女ⅴideoshd黑人| 久久亚洲影院| 欧美在线中文字幕| 欧美日韩在线大尺度| 玖玖玖免费嫩草在线影院一区| 欧美日韩不卡| 欧美成在线视频| 国产亚洲精久久久久久| 亚洲国产导航| 精久久久久久| 亚洲欧美在线网| 一区二区欧美在线观看| 久久精品久久99精品久久| 亚洲欧美日韩久久精品| 欧美精品久久久久久久免费观看 | 久久久久久97三级| 欧美精品久久久久久| 久久资源av| 国产精品成人一区| 亚洲三级电影在线观看| 在线观看精品视频| 久久精品成人一区二区三区蜜臀 | 黄色小说综合网站| 性色av一区二区三区| 亚洲在线中文字幕| 欧美美女操人视频| 亚洲大片免费看| 亚洲高清在线精品| 久久人体大胆视频| 久久久久久伊人| 国产日韩三区| 香蕉亚洲视频| 久久精品日产第一区二区| 国产日产欧美a一级在线| 亚洲免费观看在线观看| 日韩视频一区二区三区在线播放 | 欧美午夜精品久久久久免费视| 欧美不卡在线视频| 91久久精品国产91性色tv| 玖玖国产精品视频| 欧美激情精品| 亚洲伦伦在线| 欧美日韩国产综合久久| 日韩午夜剧场| 午夜精品久久久久久久99樱桃| 欧美精品一区二区三区很污很色的 | 久热精品在线视频| 免费欧美电影| 亚洲欧洲日本在线| 欧美日韩国产一级| 正在播放日韩| 亚洲一区二区成人| 欧美日韩综合久久| 正在播放欧美一区| 久久精品99国产精品日本| 雨宫琴音一区二区在线| 巨乳诱惑日韩免费av| 最新日韩中文字幕| 亚洲图片你懂的| 国产欧美一区二区精品忘忧草| 亚洲欧美激情诱惑| 牛夜精品久久久久久久99黑人| 亚洲国产精品久久| 欧美日韩免费看| 亚洲欧美日韩一区二区| 欧美a级片网站| 亚洲视频国产视频|