none
[VB.NET 2008] 將byte() 轉成文字的問題 RRS feed

  • 問題

  • 我從 NetworkStream.read 取得了一個大小為1024的byte()

    Dim ReceiveBytes(1023) As Byte

    size = NetworkStream_.Read(ReceiveBytes, 0, ReceiveBytes.Length)

     

    之後使用 trace.write(Encoding.UTF8.GetString(ReceiveBytes).Trim())

    成功輸出了byte 的內容

     

    但是問題來了, 當我把 Encoding.UTF8.GetString(ReceiveBytes).Trim() 回傳的字, 存到 string 變數時, 一切正常的

    但是, 當使用了 string.length 屬性時, 回傳的總是 1024

    當我把字串轉回到byte (與ReceiveBytes內容一樣) , 它的值是 {12,34,56,78,0,0,0,0,0,0,0,.............,0} 

    12,34,56,78 只是類似的, 因為我忘記了實際是多少

    問題就是後面的 {0}

    在字串裹使用了trim都拿不掉

     

    請問怎樣才能把那些 0 拿走 或者是 將byte轉成字串後, 可把實際沒有的內容拿走之類的東西?

    (應該是怎樣可以用到size來把那個byte() 切小...)

     

    謝謝 


    自學了VB幾年的新手 主要研究以程式代替人手控制電腦的程式
    • 已編輯 Marco Chan 2011年12月9日 下午 01:12
    2011年12月9日 下午 01:00

解答

  • 請使用Array.Resize

    您使用NetworkStream.Read回傳值是實際資料的大小吧!

    因此您可以用Array.Resize來重設Array的Size!

     

    Dim ReceiveBytes(1023) As Byte
    
    size = NetworkStream_.Read(ReceiveBytes, 0, ReceiveBytes.Length)
    
    Array.Resize(ReceiveBytes, size)
    


     


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2011年12月9日 下午 01:17
  • Visual Basic可以用 (但以下方法C#是沒有的)

     

    ReDim Preserve ReceiveBytes(size-1)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年12月9日 下午 02:18
    版主

所有回覆

  • 請使用Array.Resize

    您使用NetworkStream.Read回傳值是實際資料的大小吧!

    因此您可以用Array.Resize來重設Array的Size!

     

    Dim ReceiveBytes(1023) As Byte
    
    size = NetworkStream_.Read(ReceiveBytes, 0, ReceiveBytes.Length)
    
    Array.Resize(ReceiveBytes, size)
    


     


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2011年12月9日 下午 01:17
  • Visual Basic可以用 (但以下方法C#是沒有的)

     

    ReDim Preserve ReceiveBytes(size-1)


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    2011年12月9日 下午 02:18
    版主
  • 啊? 原來這樣就ok了.............

     

    感謝感謝!!


    自學了VB幾年的新手 主要研究以程式代替人手控制電腦的程式
    2011年12月9日 下午 02:25