JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java SE 討論區  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友   
reply to postflat modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 網路封包處理心得分享
volker





發文: 49
積分: 1
於 2005-11-08 14:37 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
最近在寫一個網路封包接收程式,不過以往用VB寫時我都是用CopyMemory將buffer內的某段位元資料copy到相對應的變數,在加以顯示出來 如
Dim i as Integer
CopyMemory VarPtr( i ),VarPtr(buffer( n )),2) 'n>=0 and n<UBound(buffer)
但在java中似乎不允許這樣使用(或許是我不會用啦Disapproved)
後來終於找到意思差不多的方式,分享給大家,就是用
java.nio.* 這個套件中的ByteBuffer及ByteOrder 方法如下:
:
:
short i=0;
byte[] buffer={0x10,0x20};
ByteBuffer bf=ByteBuffer.wrap(buffer);
bf.order(ByteOrder.nativeOrder()); //依系統決定big-endian or little-endian
i=bf.getShort(0);

如此i=8208

除此方法外,就是用程式方式解決(但會有跨平台的問題)如
//little-endian
i=Array.getByte(ai,1);
i<<=8;
i+=Array.getByte(ai,0);

//big-endian
i=Array.getByte(ai,0);
i<<=8;
i+=Array.getByte(ai,1);

不知各位先進還有其他更好的方法嗎?


reply to postreply to post
話題樹型展開
人氣 標題 作者 字數 發文時間
2071 網路封包處理心得分享 volker 664 2005-11-08 14:37
» JWorld@TW »  Java SE 討論區

reply to postflat modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8