2016-05-13 14 views
1

は、私はこれを試してみた:バイト>文字列>バイト>ファイルVB

Public Class Form1 

     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
      Dim bytes() As Byte = My.Computer.FileSystem.ReadAllBytes("C:\Archive.zip") 

      Dim filestream As System.IO.FileStream = System.IO.File.Create("C:\Archive2.zip") 

      Dim info As Byte() = fromstringtobyte(frombytetostring(bytes)) 
      filestream.Write(info, 0, info.Length) 
      filestream.Close() 
     End Sub 
     Private Function frombytetostring(ByVal b() As Byte) 
      Dim s As String 
      s = Convert.ToBase64String(b) 
      Return s 

     End Function 
     Private Function fromstringtobyte(ByVal s As String) 
      Dim b() As Byte 
      b = System.Text.Encoding.UTF8.GetBytes(s) 
      Return b 
     End Function 
    End Class 

作成された新しいファイルが壊れていました。 他のソリューションをお勧めしますか?

私の悪い英語のため申し訳ありませんが、それは私の主な言語ではありません。文字列への変換

答えて

0

あなたのバイトが間違っています。あなたは使用する必要があります。

System.Text.Encoding.[your encoding].GetString(bytes) 

出典:

How to: Convert an Array of Bytes into a String in Visual Basic

How to: Convert Strings into an Array of Bytes in Visual Basic


あなたが使用するエンコーディングを決定するだけでなく、これを参照することもできます。The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)

+0

どのエンコーディングを使用するのがわかりますか? –

+0

文字列と文字列の両方に同じエンコーディングを使用する必要があります。どちらを選択するかは、さまざまな要因によって異なります。投稿したリンクを参照してください。 –

+0

投稿したリンクはどれですか? –

-1

私は答えを見つけました、新しいコードです:

Public Class Form1 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     Dim bytes() As Byte = My.Computer.FileSystem.ReadAllBytes("C:\Program Files (x86)\Windows Repair Pro\Windows Repair Pro (All In One) 3.8.7\Tweaking.com - Windows Repair Portable\Archive.zip") 

     Dim filestream As System.IO.FileStream = System.IO.File.Create("C:\Program Files (x86)\Windows Repair Pro\Windows Repair Pro (All In One) 3.8.7\Tweaking.com - Windows Repair Portable\Archive2.zip") 

     Dim info As Byte() = fromstringtobyte(frombytetostring(bytes)) 
     filestream.Write(info, 0, info.Length) 
     filestream.Close() 
    End Sub 
    Private Function frombytetostring(ByVal b() As Byte) 
     Dim s As String 
     s = BitConverter.ToString(b) 
     Return s.Replace("-", "") 
    End Function 
    Private Function fromstringtobyte(ByVal s As String) 
     Dim B() As Byte = New Byte(s.Length/2 - 1) {} 
     For i As Integer = 0 To s.Length - 1 Step 2 
      B(i/2) = Convert.ToByte(s.Substring(i, 2), 16) 
     Next 
     Return B 
    End Function 

End Class 
関連する問題