tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^7: .netでのストリームの扱い
投稿日: 2015/09/02(Wed) 16:22
投稿者魔界の仮面弁士
> bin の部分が、fiddlerの表示で system.byte[]となっていて
> 画像の内容が入っていないようです。

> writer.Write(rawBin)

Stream クラスの Write メソッドには、
 Sub Writer( value() As Byte )
に相当するオーバーロードがありません。上記のコードからは、
 Sub Writer( value As Object )
のオーバーロードの呼び出しとして扱われます。

https://msdn.microsoft.com/ja-jp/library/dfc2b8zk.aspx
》 オブジェクトで ToString メソッドを呼び出して、
》 そのオブジェクトのテキスト形式をテキスト文字列またはストリームに書き込みます。


今回の場合は、Stream 系クラスすべてが持つ
 Sub Write( buffer() As Byte, offset As Integer, count As Integer )
のメソッドを使って、
 .Write(raw, 0, raw.Length)
とすると良いでしょう。


もしくは、テキストの書き込みには StreamWriter を使うようにし、
バイナリの書き込みには BinaryWriter を使うという、併用案もあります。

Imports System
Imports System.IO
Imports System.Text
Module Module1
    Sub Main()
        Dim txt As String = "ABCDEF"
        Dim raw() As Byte = {1, 2, 3, 4, 5}

        Dim enc As New UTF8Encoding(False)
        Using ms As New MemoryStream()
            Dim txtWriter As New StreamWriter(ms, enc)
            txtWriter.AutoFlush = True
            Dim binWriter As New BinaryWriter(ms, enc)

            txtWriter.Write(txt)
            binWriter.Write(raw)

            ms.Position = 0
            Dim bin() As Byte = ms.ToArray()

            '「41-42-43-44-45-46-47-01-02-03-04-05」になるはず
            Console.Clear()
            Console.WriteLine(BitConverter.ToString(bin))
        End Using
        Console.ReadKey()
    End Sub
End Module


あるいは StreamWriter や BinaryWriter の類は一切使わずに、すべてを
 Sub Write( buffer() As Byte, offset As Integer, count As Integer )
で済ませるという手もあります。
(文字列を書き込む場合には、Encoding クラスの GetBytes メソッドを使ってバイナリ化する)

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。