
すいません、教えて下さい。
Byte型で読み込んだ内容を指定した固定長で出力したいです。
例えば、次のテキストファイルがあります。
【読み込み元.txt】
-------------------------------------------------------
ABC123
-------------------------------------------------------
文字コードをSJISとしてバイナリ値では「41 42 43 31 32 33」となります。
この値を次のように出力したいです。
【出力先.txt】(3バイト区切りとする)
-------------------------------------------------------
414243
313233
-------------------------------------------------------
なんとか自力で近しい?とこまで行けたのかなと思いますが
肝心の出力がうまくいきません。
【VB.Net】
-------------------------------------------------------
Dim BUFSIZE As Integer = 2048 ' 1度に処理するサイズ
Dim buf(BUFSIZE) As Byte ' 読み込み用バッファ
Dim readSize As Integer ' Readメソッドで読み込んだバイト数
Dim srcName As String = "C:\Temp\A.txt" ' 読み込み元
Dim detName As String = "C:\Temp\B.txt" ' 出力先
' 処理開始
Using src As New FileStream(srcName, FileMode.Open, FileAccess.Read)
Using dest As New FileStream(destName, FileMode.Create, FileAccess.Write)
While True
' 読み込み
readSize = src.Read(buf, 0, BUFSIZE)
' 読み込むものが無ければ終了
If readSize = 0 Then Exit While
' 直接16進数を指定固定長で書き込みしたい部分
For i As Integer = 0 To readSize - 1
msgbox buf(i)
Next
' 書き込み実行
dest.Write(buf, 0, readSize)
End While
End Using
End Using
-------------------------------------------------------
大変お手数ですがご教示頂ければと思います。
No.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
No.1
- 回答日時:
「固定長」とありますが、「1行が6文字のテキストファイル」ということでよろしいですか?
それなら、次の方法でよいのでは。
ToString、format等で Byte→2文字の16進数文字列にする
↓
3つ分出力したら、改行を出力する
http://msdn.microsoft.com/ja-jp/library/dwhawy9k …
この回答への補足
試しに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
-----------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
エクセルのVBAコードと数式につ...
-
エクセルのマクロについて教え...
-
エクセルの改行について
-
【VBA】 結合セルに複数画像と...
-
vbsでのwebフォームへの入力制限?
-
算術演算子「¥」の意味について
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
Vba セルの4辺について罫線が有...
-
vb.net(vs2022)のtextboxのデザ...
-
ダブルクリックで貼り付けた画...
-
VBAの「To」という語句について
-
VBAでユーザーフォームを指定回...
-
VBAでCOPYを繰り返すと、処理が...
-
【マクロ】変数を使った、文字...
-
エクセルのVBAコードについて教...
-
ワードの図形にマクロを登録で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Vba セルの4辺について罫線が有...
-
vbsでのwebフォームへの入力制限?
-
【ExcelVBA】5万行以上のデー...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
【マクロ】開いているブックの...
-
【マクロ】並び替えの範囲が、...
-
エクセルの改行について
-
エクセルのマクロについて教え...
-
vb.net(vs2022)のtextboxのデザ...
-
VBAでCOPYを繰り返すと、処理が...
-
VBA ユーザーフォーム ボタンク...
-
エクセルのVBAコードと数式につ...
-
エクセルのVBAコードについて教...
-
[VB.net] ボタン(Flat)のEnable...
-
【マクロ】変数を使った、文字...
-
改行文字「vbCrLf」とは
-
質問58753 このコードでうまく...
-
【マクロ】シートの変数へ入れ...
-
ワードの図形にマクロを登録で...
-
算術演算子「¥」の意味について
おすすめ情報