- ベストアンサー
[VB.NET] テキスト出力で困ってます(T△T
- Byte型で読み込んだ内容を指定した固定長で出力する方法を教えてください。テキストファイルを読み込んで、そのバイナリ値を指定の形式で出力する方法がわかりません。
- VB.Netでテキストファイルを読み込み、16進数形式で指定の固定長で出力する方法を教えてください。試したコードではうまくいかず、どのように修正すれば良いか分かりません。
- VB.Netでテキストファイルのバイナリ値を読み込み、指定の形式で出力する方法を教えてください。現在のコードでは出力がうまくいかず、どのように修正すれば良いか分かりません。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
入力ファイルの各バイトを ただ単純に16進数表記で出力するプログラムです。 適当に改造すれば目的のこともできるでしょう。 ======================================== ' インデントに全角空白を使っています。要削除。 Class Bin2HexText Shared Sub main(ByVal args As String()) Dim srcName As String = args(0) ' 入力ファイル名 Dim destName As String = args(1) ' 出力ファイル名 Dim BUFSIZE As Integer = 2048 ' 1度に処理するサイズ Dim buf(BUFSIZE) As Byte ' 読み込み用バッファ Dim readSize As Integer ' Readメソッドで読み込んだバイト数 Using src As New System.IO.FileStream( _ srcName, System.IO.FileMode.Open, System.IO.FileAccess.Read) ' 出力ファイルはテキストファイルとして扱う Using dest As New System.IO.StreamWriter( _ destName, False, System.Text.Encoding.GetEncoding("shift_jis")) While True readSize = src.Read(buf, 0, BUFSIZE) ' 読み込み If readSize = 0 Then Exit While ' 完了 End If For i As Integer = 0 To readSize - 1 ' Byte型数値を16進数表記(文字列)に変換して出力 dest.Write( String.Format("{0:X2} ", buf(i)) ) Next End While End Using End Using End Sub End Class
その他の回答 (1)
- kmee
- ベストアンサー率55% (1857/3366)
「固定長」とありますが、「1行が6文字のテキストファイル」ということでよろしいですか? それなら、次の方法でよいのでは。 ToString、format等で Byte→2文字の16進数文字列にする ↓ 3つ分出力したら、改行を出力する http://msdn.microsoft.com/ja-jp/library/dwhawy9k%28v=vs.110%29.aspx#XFormatString
お礼
すいませんちょっとよくわかんないです。
補足
試しにAの文字列をbyte型に直して10進「65」を6と5にばらして 今度は6,5のそれぞれのbyteを取得する事が出来たんですけど それをどうやってbufへ格納してファイルに書き出して良いのかわかんないです、、、。 ----------------------- ' Byte書き込み For i As Integer = 0 To readSize - 1 n = buf(i) For j As Integer = 1 To Len(n) MsgBox(Asc(Mid(n, j, 1))) Next Next -----------------------
お礼
とてもわかりやすい回答ありがとうございました! まじうれしーーーーーーーーw さんくすうー^^