hamayan です。 maruha> > sprintf( buffer, "UL=0x%08lx UI=0x%08x\n", uLData, uIData ); maruha> > 特にsprintf文の変換元の型指定→lx maruha> maruha> 桁だけの指定だけで、変換元の型指定を行っていませんでした。。 うまく動いたでしょうか?。 ソースコードを見て引数の型が判断できるのは人間とコンパイラだけ で、sprintfと言ったライブラリ関数では、引数の型を判断するのに唯 一の方法は、書式の解釈だけです。いくらキャストしても、関数には伝 わりません。 %08xを解釈すると、「符号無しint型の引数を、16進表記で8文字幅の右詰 で記述し、左の余った所は0で埋める。」となるので、0000ffffを返した のです。 いずれにせよシミュレータで確認すれば、 uLData = (Data[3] << 24) + (Data[2] << 16) + (Data[1] << 8) + Data[0]; までは正しく計算できている事が判ったはずなので、問題はその先にある! と絞れたと思います。