プチコンで遊ぼう! (はてなブログ版)

任天堂3DSのプチコンで遊ぼう! [twitter:@eida_s]

はてなダイアリーから移行しました。 はてなダイアリーのURLを開いても自動的にこちらにリダイレクトされますのでご了承ください。

バイナリファイル調査その(1)

バイナリファイルサイズ調査
(1)

VAR A[1]
a[0]=1
SAVE "DAT:BINTEST",A

とすると、36バイトのファイルが作成された。

(2)

VAR A#[2]
A#[0]=1
A#[1]=2
SAVE "DAT:BINTEST",A#

だと44バイト。

(3)

VAR A%[1]
A%[0]=1
SAVE "DAT:BINTEST",A%

だと32バイト。

(4)

VAR A%[2]
A%[0]=1
A%[1]=2
SAVE "DAT:BINTEST",A%

だと36バイト。

よって、
ヘッダー28バイト+(倍精度小数なら8バイト、整数なら4バイト)*個数
の大きさと思われる。


#ヘッダーが読み取れたら、GRPファイルかそうじゃないか判別できると思って調査しはじめたけど、今のところヘッダーを読み取る方法はない。

バイナリファイル調査その(2)

型変換調査
(1)

VAR A#[10]
A#[0]=1.5
A#[1]=2.5
SAVE "DAT:BINDATA",A#
VAR B%[0]
LOAD "DAT:BINDATA",B%
?"LEN=";LEN(B%)
?B%[0]
?B%[1]
?B%[2]
?B%[3]

とすると、

LEN=10
1
2
0
0

と表示される。

(2)

VAR A%[10]
A%[0]=1
A%[1]=2
SAVE "DAT:BINDATA",A%
VAR B#[0]
LOAD "DAT:BINDATA",B#
?"LEN=";LEN(B#)
?B#[0]
?B#[1]
?B#[2]
?B#[3]

とすると、

LEN=10
1
2
0
0

と表示される。

つまり、直接的にバイナリとして読み込まれるわけではなく、
LOAD時に、SAVE時の型として一度読み込まれてから、その後に変数に代入されていることがわかる。