hamayan です。 maruha> sprintf、sizeofで確認すると、 sprintf文の記述が無いので確証をもてないのですが、以下の様にしています?。 char buffer[ 64 ]; uLData = 0; uIData = 0; Data[3] = 0xff; Data[2] = 0xff; Data[1] = 0xff; Data[0] = 0xff; uLData = (Data[3] << 24) + (Data[2] << 16) + (Data[1] << 8) + Data[0]; uIData = (Data[3] << 24) + (Data[2] << 16) + (Data[1] << 8) + Data[0]; sprintf( buffer, "UL=0x%08lx UI=0x%08x\n", uLData, uIData ); 特にsprintf文の変換元の型指定→lx HEWのシミュレーションで正しくuLDataが0xffffffffとなっていることを確認し ました。 しかしuIDataの方は元々16bitなので0x0000ffffは正解では?。 HEWを使っているなら、シミュレーションを活用するといいですよ。