バイナリーファイルを作成しています。
typUser(i).UserIdへは 8桁のID番号が入っています。(String型)
例えば typUser(i).UserId を "12345678" とします。
これをバイナリー表示にすれば "00 BC 61 4E" となります。
そして、作成した .dat ファイルをバイナリーエディタで開いたとき"00 BC 61 4E"と表示させたいです。
bytOutputData(0) = CByte("&H" & Mid(typUser(i).UserId, 1, 2))
bytOutputData(1) = CByte("&H" & Mid(typUser(i).UserId, 3, 2))
bytOutputData(2) = CByte("&H" & Mid(typUser(i).UserId, 5, 2))
bytOutputData(3) = CByte("&H" & Mid(typUser(i).UserId, 7, 2))
の部分の格納がどうしても上手くいかず、手詰まりになりました。
どうかご教授ください。
バイナリデータを出力
strFileName = "ID001.dat"
strFilePath = labOutputPath.Caption & "\" & strFileName
intFileNo = FreeFile
Open strFileName For Binary Access Write As #intFileNo
For i = 0 To UserCount - 1
' カードID(4)
bytOutputData(0) = CByte("&H" & Mid(typUser(i).UserId, 1, 2))
bytOutputData(1) = CByte("&H" & Mid(typUser(i).UserId, 3, 2))
bytOutputData(2) = CByte("&H" & Mid(typUser(i).UserId, 5, 2))
bytOutputData(3) = CByte("&H" & Mid(typUser(i).UserId, 7, 2))
Put #intFileNo, , bytOutputData
Next
Close #intFileNo
bytOutputData(0) = CByte("&H" & Mid(Hex(typUser(i).UserId), 1, 2))
じゃないのかな?
同じ様な書き方で
bytOutputData(0) = CByte("&H" & Mid(Right("00000000" & Hex(typUser(i).UserId), 8), 1, 2))
でどうでしょう
通り巣鴨さん ひでらんさん ありがとうございます。
bytOutputData(0) = CByte("&H" & Mid(Hex(typUser(i).UserId), 1, 2))は
3バイト目で型の不一致エラーが出てしまいました。
bytOutputData(0) = CByte("&H" & Mid(Right("00000000" & Hex(typUser(i).UserId), 8), 1, 2))
のやり方で、期待通りの動作ができました。
関連の質問なのですが
bytOutputData(0) = CByte("&H" & Mid(Format(Hex(typUser(nLp).UserId), "00000000"), 1, 2))
この質問の前にという形でもやっているのですが、こちらでは"型が一致しません"とのエラーがでました。
この場合に何故Format関数はエラーでRight関数はOKなのでしょうか?
問題自体は解決したのですが、お願いしますm(_ _)m
>Format(Hex(typUser(nLp).UserId), "00000000")
"00000000"の場合は数字しか入れられないはずです。
Hex関数を使用しているので"A"〜"F"までの文字が
入りますからエラーが出るのではないでしょうか?
※MSDNライブラリのFormat関数を参照
「関連項目」の「数値表示書式指定文字」
>Right("00000000" & Hex(typUser(i).UserId), 8)
これは、"00000000"という文字列に、Hexの文字列をくっつけて、
右から8文字取得しているだけで、書式は一切変更してないです。
これでわかりますか?
ひでらんさん 有難うございました。
わかりやすい、説明をありがとうございます。
理解できました。
また、MSDNの説明にしっかり書いてありました。
すみません見落としてました。
丁寧に有難うございましたm(_ _)m
ツイート | ![]() |