pachira です。 どうもいろいろ気になる発言が飛び交ってますが、 On 2006/08/04, at 12:05, 岡山英一郎 wrote: >> uLData = (Data[3] << 24) + (Data[2] << 16) + (Data[1] << 8) + Data >> [0]; > ~~~~~~~~~~~~~~ > CPUのアーキテクチャが16ビットとかいう以前の問題ですね。 いえいえ、そういう問題で、int が 16bitだからです。 > charをいきなり24ビット左シフトしているけど、コンパイラが > 自動でlongに型変 > 換して演算してくれる期待はできません。 longには変換してくれませんが、int 以下の値を演算するときは int に昇格されて演算します。 C言語はそういうお約束だったはず。 > 明示的に型キャストしてトライするとどうでしょうか。 今回は long なり unsigned long なりにすればうまくい くはず。