|
|
Log In | Not a Member? |
Contact ADC |
| < Previous PageNext Page > |
マイクロプロセッサのアーキテクチャは一般に、2種類のバイト順序方式(リトルエンディアンとビッグエンディアン)のどちらかを使用して、マルチバイト形式のデータの個々のバイトをメモリに格納します。このバイト順序方式の違いが、バイト順序の異なるコンピュータで作成されたファイルのデータを読み取るときに非常に重要になります。また、ネットワーク接続経由でのデータの送受信時や、ネットワークデータの処理時にも、バイト順序を考慮する必要があります。バイト順序の違いを考慮しないと、その違いが原因で結果に誤りが生じることがあります。たとえば、メモリ内でのスカラー型のバイト順序は、Listing 2-1に示すようにアーキテクチャに依存します。
Listing 2-1 バイト順序の違いを示すコード
unsigned char charVal; |
unsigned long value = 0x12345678; |
unsigned long *ptr = &value; |
charVal = *(unsigned char*)ptr; |
リトルエンディアンのアドレス指定方式を用いるプロセッサでは、変数charValの値は0x78となります。ビッグエンディアンのアドレス指定方式を用いるプロセッサの場合、変数charValの値は0x12となります。このコードを、アーキテクチャに依存しないようにするには、Listing 2-1の最後の行を次のように変更します。
charVal = (unsigned char)*ptr;
バイト順序と、バイト順序の違いに対応するための対策の詳細については、「バイトのスワップ」を参照してください。
| < Previous PageNext Page > |
Last updated: 2006-03-08
|
Get information on Apple products.
Visit the Apple Store online or at retail locations. 1-800-MY-APPLE Copyright © 2007 Apple Inc. All rights reserved. | Terms of use | Privacy Notice |