Go言語で配列のメモリイメージをそのままファイルから読む

  

その後解決したのでメモっておく。

参考にしたのは以下のところ。

 

qiita.com

 

要点だけ引っ張ったコードが以下になる。

KPP := make([]int16, 81*1548*1548*2)
file, err := os.Open("eval/KPP_synthesized.bin")
p_kpp := (*[2 * 81 * 1548 * 1548 * 2]byte)(unsafe.Pointer(&KPP[0]))[:]
file.Read(p_kpp)

 

int16のスライスの先頭アドレスをバイト列のポインタにキャストしてあげている。

結果はエンディアン依存することになるけど,そもそもbinary.Readが重い理由が全データをエンディアン変換をしてるからなんだよね。

使いまわさない前提でローカル運用するコードだから許して下さい。