「エンディアン」という単語は何を意味しますか



使用ソフトウェア: LabVIEW Development Systems>>LabVIEW Full Development System
使用ソフトウェア・バージョン: 1.0
使用ソフトウェア・バージョンに特化: 1.0
二次のソフトウェア: Other NI Software, Calibration Executive, DIAdem, LabVIEW Toolkits, LabWindows/CVI Add-ons, Measurement Studio Add-ons, LabVIEW Modules, LabVIEW Development Systems, LabWindows/CVI Development Systems, Measurement Studio, TestStand, Lookout, MATRIXx

問題:


サンプル VI に「リトルエンディアン」や「ビッグエンディアン」などの単語が記載されている場合がありますが、この「エンディアン」という単語は何を意味しますか。

LabVIEW で保存したデータを他言語で作成したコードで読みとろうとしたのですが、読み取ったデータが保存したデータと異なります。この「エンディアン」という単語と関係があるのでしょうか。



解決策:


エンディアン (Endian) とは複数バイトのバイナリ数値をバイト単位で格納する上での方法を示します。

例えば 2 バイトのバイナリ数値の場合、ビッグエンディアン形式では (MSB LSB) と格納され、リトルエンディアン形式では (LSB MSB) と格納されます。ここで MSB は最上位のバイト (Most Significant Byte) LSB は最下位のバイト (Least Significant Byte) を表します。ですので 2 バイトのバイナリ数値が 「1」 の場合、ビッグエンディアン形式で表記するとバイナリ表記では (00000000 00000001) となり左端 (16 ビット目) が最上位ビットになります。一方でリトルエンディアン形式で表記すると (00000001 00000000) となり、右から8ビット目のデータが最上位ビットになります。データを読み書きする際、ビッグエンディアン形式とリトルエンディアン形式のどちらで行われるかはアプリケーションによって異なります。


   

U8で表現した1

U16で表現した1

SGL(単精度少数)の場合

LabVIEW: ビッグエンディアン (00000001)   (00000000 00000001)   (Byte4:Byte3:Byte2:Byte1)
(Win) C: リトルエンディアン (00000001) (00000001 00000000) (Byte1:Byte2:Byte3:Byte4)


ここで注意すべき点は、このエンディアンの違いは全てのデータ型に当てはまるということです。データ型が整数でも、倍精度でも、もしくは数百万の要素で構成された配列でも、メモリに格納される際は「ビッグエンディアン形式」か「リトルエンディアン形式」のどちらかになります。よって、例えばリトルエンディアン形式で保存されたデータを読み込み、ビッグエンディアン形式に変更しなければいけない場合はバイトスワップ (Swap Bytes.vi) を使用します。


LabVIEW 8 以降では「文字列に平坦化」、「文字列から非平坦化」、「バイナリファイルに書き込む」、「バイナリファイルから読み取る」の 4 つの関数にビッグエンディアン形式、リトルエンディアン形式を選択できる入力が追加されました。



LabVIEW は複数バイトのデータをビッグエンディアン形式で格納します。LabVIEW は当初 Macintosh OS 上で開発されたため使用しているプラットフォームが Windows (x86) でもビッグエンディアン方式を使用します。リトルエンディアン形式は Intel x86 プロセッサを元に開発されたアプリケーションで使用されています。一方で Motorola プロセッサを元にしたものはビッグエンディアン形式を使用します。C 言語や Windows ベースのアプリケーションは典型的にリトルエンディアン形式で数値データを取り扱うことに注意してください。



関連リンク:


LabVIEW Data Storage

KnowledgeBase 2MKB41DV: How Can I Read the Binary Representation of a Floating Point Number in LabVIEW?

 



添付:


bin_file_write.vi - bin_file_write.vibin_file_read.vi - bin_file_read.vi
bin_data_files.zip - bin_data_files.zip
bin_C_proj.zip - bin_C_proj.zip



報告日時: 05/31/2000
最終更新日: 12/09/2010
ドキュメントID: 1XU8RQPH