dポイントプレゼントキャンペーン実施中!

こんばんわ,

現在Redhat Linux 9の環境でCの勉強をしています。

ファイルから読み取ったデータがBIGENDIANの形なので,それをLITTILE ENDIANになおして使用したいのですが,できるだけ高速に変換するアルゴリズムを考えています。

変換するデータは1byte(これは関係なし),2byte,4byte,でそれぞれunsignedのshortintとint型です。
とにかくべた書きでもいいのですが,どのようにすれば高速に変換できるのでしょうか。

glib.hやhtonlなどを使用する方法などよろしくお願いします。

A 回答 (2件)

linux(glibcな処理系)だと,htonl()もインライン展開がなされます。



実行速度はエンディアン変換演算よりも,その周囲の処理全体をみてコード最適化する方が大事。
    • good
    • 0

glib のソースを見る限り


GINT16_FROM_BE とか GINT32_FROM_BE
を使えば、インラインアセンブラに展開されているようです。

htonl は関数呼び出しだからそれがない分 glib 有利・・・かも

ただ、バイトオーダーの変換なんて
glib 使っても自力でマクロ組んでも
そんな劇的に速度が変化するとはおもえないなぁ
    • good
    • 0
この回答へのお礼

こんにちわ,回答ありがとうございます。

ただ,GUINT16_LE_BEなどを使用しようとすると,ヘッダーファイル自体がエラーを起こすんです。
何かダウンロードがおかしいのでしょうか。

お礼日時:2003/08/20 10:47

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!