ab.com コミュニティ https://www.activebasic.com/forum/ |
|
バイナリファイルの読み方がわかりません! https://www.activebasic.com/forum/viewtopic.php?t=1007 |
ページ 1 / 1 |
作成者: | 初心者 [ 2006年5月06日(土) 22:18 ] |
記事の件名: | バイナリファイルの読み方がわかりません! |
VBでしたら、バイナリモードで開くのが普通ですが、AB6ではモード指定がみあたりません。どのようにすればよいのでしょうか?また、エンディアン変換の方法も教えてほしいのですが・・・・・ |
作成者: | 7 [ 2006年5月06日(土) 23:34 ] |
記事の件名: | Re: バイナリファイルの読み方がわかりません! |
> VBでしたら、バイナリモードで開くのが普通ですが、AB6ではモード指定がみあたりません。どのようにすればよいのでしょうか? どうでもいいツッコミで始めますけど、VB6とABの間違いですよね? モード指定もなにもActiveBasicはバイナリモードでしか開くことができません。 > また、エンディアン変換の方法も教えてほしいのですが・・・・・ エンディアン変換って初めて聞いたので間違ってるかもしれませんけど、変数の型を変換したいならAs演算子を使います。 コード: Dim i As Integer Dim d As Double d=0.5 i=d As Integer ' 普段はInt関数やFix関数で整数に変換しますけど... |
作成者: | イグトランス [ 2006年5月07日(日) 00:03 ] |
記事の件名: | |
ABにはVBのバイナリモードに相当するものはありません。 API関数を使って読み込むのが良いでしょう。 エンディアン変換にはWinSockの関数が使えます。 コード: #strict #prompt TypeDef u_short = Word TypeDef u_long = DWord Declare Function htons Lib "wsock32.dll" (netshort As u_short) As u_short Declare Function htonl Lib "wsock32.dll" (netshort As u_long) As u_long Declare Function ntohs Lib "wsock32.dll" (netshort As u_short) As u_short Declare Function ntohl Lib "wsock32.dll" (netshort As u_long) As u_long Print Hex$(htons(&habcd)) Print Hex$(htonl(&h12345678)) Print Hex$(ntohs(&hcdab)) Print Hex$(ntohl(&h78563412))nはネットワークエンディアン,hはホストエンディアンを意味します。 ネットワークエンディアン = ビックエンディアン ホストエンディアン = 今使っている環境のエンディアン(x86などでは当然リトルエンディアン) |
作成者: | 初心者 [ 2006年5月08日(月) 16:15 ] |
記事の件名: | Re: バイナリファイルの読み方がわかりません! |
> モード指定もなにもActiveBasicはバイナリモードでしか開くことができません。 とありますが、バイナリで書き込む方法はどうするのでしょうか? ヘルプを見ながら作ったのですが読み込み方は次の方法でよろしいのでしょうか? コード: ’書き込み Dim buffer As String Dim byt As Byte buffer="12" Open "write.txt" as #1 ’当然のことながらファイルはバイナリにはならない Field #1,2 Put #1,1,buffer Close #1 ’読み込み buffer="" Open "write.txt" as #2 Field #2,2 Get #2,1,buffer Close #2 byt=Asc(buffer) MessageBox(0,Str$(byt),"ファイルの中身",MB_OK) |
作成者: | 7 [ 2006年5月08日(月) 20:12 ] |
記事の件名: | Re: バイナリファイルの読み方がわかりません! |
> > モード指定もなにもActiveBasicはバイナリモードでしか開くことができません。 > とありますが、バイナリで書き込む方法はどうするのでしょうか? > ヘルプを見ながら作ったのですが読み込み方は次の方法でよろしいのでしょうか? Win32APIを直接弄る人間で、Open関数などなど使ったことがないのでちょっと変かもしれません。 というかバイナリに関する知識がないので全く違うことしてるかもしれません...。 [ここをクリックすると内容が表示されます]
とりあえずファイルには "12" じゃなくて "4950" と出力されています。コード: ' 書き込み Dim buffer As String, b As String Dim len As Long, cnt As Long buffer="12" len=Len(buffer) For cnt=0 To len b=b+Str$(buffer[cnt]) Next Open "write.txt" as #1 '当然のことながらファイルはバイナリにはならない Field #1,Len(b) Put #1,1,b Close #1 これでいいんでしょうか? |
作成者: | 初心者 [ 2006年5月12日(金) 09:30 ] |
記事の件名: | Re: バイナリファイルの読み方がわかりません! |
インターネットで調べたら次のホームベージにありました。 http://orios.s151.xrea.com/ いろいろありがとうがざいました。 |
作成者: | イグトランス [ 2006年5月12日(金) 18:13 ] |
記事の件名: | |
そもそも初心者さんの考えているバイナリモードはVBのバイナリモードで、 7さんの考えているバイナリモードはCのバイナリモードだったのではないかと思います。 だからお互い微妙に噛み合ってないように見受けられました。 今更ながらで、すいません。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |