-1

バイナリ ファイルのバイトを読み取り、文字列に変換してから、ディスクに書き込もうとしています。

基本的にこれは私のコードです

Dim bytes As Byte() = System.IO.File.ReadAllBytes("C:\1.exe")
Clipboard.SetText(bytes.ToString)
System.IO.File.WriteAllBytes("C:\2.exe", bytes)

ファイルの読み取り/書き込みでは機能しますが、バイトをクリップボードにコピーできませんSystem.Byte[]。クリップボードに「」が表示されます..バイナリファイルのバイトを読み取って保存/クリップボードにコピーするにはどうすればよいですか?

4

3 に答える 3

2

Clipboard.SetText() を使用する場合は、クリップボードにテキストを配置する必要があります。EXE ファイルにはテキストは含まれず、プログラムが含まれています。1.exe ファイルをメモ帳で開いて、その様子を確認してください。テキストではありません。

バイナリ ファイルをクリップボードに置くことができます。それは次のようになります。

    Dim files = New String() {"c:\windows\notepad.exe"}
    Clipboard.SetData(DataFormats.FileDrop, files)

Windows エクスプローラーに切り替えて、Ctrl+V を押します。Notepad.exe のコピーがあります

ファイルのコピーだけが必要な場合は、File.Copy() を使用します。

    System.IO.File.Copy("c:\1.exe", "c:\2.exe")

ファイル内のバイトをコピーするだけでなく、ファイルの属性が正しく設定されていることも確認します。

于 2013-04-19T16:23:53.223 に答える
1
bytes.ToString

配列の内容ではなく、配列の文字列表現を取ります。参照型は、別のことをするためにオーバーライドしない限り、ToString() から型名を返します。

本当にやりたいことは、バイト配列を文字列に変換することです。これには、バイトがエンコードする文字列の表現に応じて、likeEncoding.GetString(bytes)の静的メンバーを適切なインスタンスとして使用する必要がある場合に使用します。EncodingEncoding.UTF8

編集#1:あなたが読んでいるものに実際には気づきませんでした. 実行可能ファイルのテキスト表現はどうなると思いますか? クリップボードに置く意味は何ですか?

于 2013-04-19T16:16:43.217 に答える
1

バイトを文字列に変換する必要があります。

Dim text as String = System.Text.Encoding.UTF8.GetString(bytes)
Clipboard.SetText(bytes.ToString)

ただし、Neoliskが言及しているように、テキストファイルではなくバイナリを実際に読み取っているため、これは実際には役に立ちません

于 2013-04-19T16:15:12.223 に答える