Apple Developer Connection
Advanced Search
Member Login Log In | Not a Member? Contact ADC

< Previous PageNext Page >

バイトのスワップ

コンピューティングの世界には、2つの主要なバイト順序方式(エンディアンフォーマット)が存在します。エンディアンフォーマットは、マルチバイトの数値データの個々のバイトを、メモリにどのように格納するかを指定します。ビッグエンディアンのバイト順序は、マルチバイトデータを最上位バイトから先に格納することを指定します。リトルエンディアンのバイト順序は、マルチバイトデータを最下位バイトから先に格納することを指定します。PowerPCプロセッサは、ビッグエンディアンのバイト順序を使用します。x86プロセッサファミリは、リトルエンディアンのバイト順序を使用します。規則では、ネットワーク経由で送信するマルチバイトデータは、ビッグエンディアンのバイト順序を使用することになっています。

データがどちらか一方のエンディアンフォーマットであるとアプリケーションが想定しており、実際にはもう一方のフォーマットであった場合、アプリケーションはそのデータを間違って解釈します。ディスクまたはネットワークとの間でマルチバイトデータ(16ビット、32ビット、64ビット)の読み取り、または書き出しを行うルーチンは、バイト順序のフォーマットに左右されるので、コード内のこうしたルーチンは詳細に検討する必要があります。バイト順序の違いに対処するためには、2つの一般的なアプローチがあります。必要に応じてバイトをスワップするか、またはXMLや、Core Foundationが提供するバイト順序に依存しないデータ形式(CFPreferences、CFPropertyList、CFXMLParser)を使用します。

バイトをスワップするか、バイト順序に依存しないデータ形式を使用するかは、該当するデータをアプリケーションの中でどのように使うかに応じて異なります。サポートすべき既存のファイル形式がある場合は、バイナリレベルで互換性のある解決策は、アプリケーションで使用していたビッグエンディアンフォーマットを受け入れ、インテルベースのMacintosh上でそのファイルの読み書きを行うときにバイトスワップするコードを記述することです。サポートすべき古いファイルがない場合は、XML(拡張マークアップ言語)、XDR(外部データ表現)、またはNSCoding (Objective C)を使用してデータを表現するように、ファイル形式を設計し直すことも考えられます。

この章では、バイト順序が問題になる理由、バイトスワップのためのガイドライン、Mac OS Xで利用可能なバイトスワップAPI、バイト順序が問題になるほとんどの状況に対する解決策について取り上げます。

Contents:

なぜバイト順序が問題になるのか
バイトスワップのためのガイドライン
バイトスワップルーチン
バイトスワップの方法
データのバイトスワップを行うコールバックの作成
関連項目




< Previous PageNext Page >


Last updated: 2006-03-08




Did this document help you?
Yes: Tell us what works for you.

It’s good, but: Report typos, inaccuracies, and so forth.

It wasn’t helpful: Tell us what would have helped.
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