私はvb.netでプログラムを作ろうとしていますが、それはファイルを開いたときにファイルが16進数のコードに変わるということですが、問題はそれが保存されて変換しようとするときです正常に戻る。結果は次のようになります。( 'WhereSelectArrayIterator`2 [System.String、System.Byte]'型のオブジェクトをキャストして 'System.Byte []'と入力できません。'WhereSelectArrayIterator`2 [System.String、System.Byte]'型のオブジェクトをキャストして 'System.Byte []'と入力できません。 Vb.net
ここでのオープンとコード
開くファイルのコードを保存します:ここにFillWithHex(RichTextBox1、OpenFileDialog1.FileName)
Async Sub FillWithHex(rtb As RichTextBox, name As String)
For Each ctl In Controls
ctl.Enabled = False
Next ctl
Dim buff(1000000) As Byte
Using fs = New FileStream(name, FileMode.Open)
Using br = New BinaryReader(fs)
While True
Dim text = String.Empty
buff = br.ReadBytes(1000000)
Await Task.Run(Sub() text = String.Join(" ", buff.
Select(Function(b) b.ToString("X2")))).
ConfigureAwait(True)
rtb.AppendText(text)
If buff.Length < 1000000 Then
Exit While
End If
End While
End Using
End Using
For Each ctl In Controls
ctl.Enabled = True
Next ctl
ToolStripLabel1.Text = "Status: Idle"
End Sub
とは、省コードはから
Try
Dim b As Byte() = RichTextBox1.Text.Split(" "c).Select(Function(n) Convert.ToByte(Convert.ToInt32(n, 16)))
My.Computer.FileSystem.WriteAllBytes(SaveFileDialog1.FileName, b, False)
Catch ex1 As Exception
Try
Dim b As Byte() = RichTextBox1.Text.Split(" "c).Select(Function(n) Convert.ToByte(Convert.ToInt32(n, 16)))
My.Computer.FileSystem.WriteAllBytes(OpenFileDialog1.FileName, b, False)
Catch ex As Exception
MsgBox("Exception caught : " + vbNewLine + vbNewLine + ex.ToString, MsgBoxStyle.Critical, "Exception Error")
End Try
End Try
大きなファイルを保存しようとすると、OutOfMemory例外が発生します。 – Coolvideos73
データをチャンクで処理する必要がありますが、特に新しい質問でそのことを尋ねることをお勧めします。 – jmcilhinney