データの損失は問題ありません。素早くInt32からInt16にマスクするか変換するには
var temp1:Int32 = 45058
var temp2:Int32 = -20345
var temp3:Int32 = -40345
var temp4:Int16 = Int16(temp1)//overflow
var temp5:Int16 = Int16(temp2)//return wrog value
var temp6:Int16 = Int16(temp3)//overflow
もこれを試してみましたが、それはまた間違った値を返して、それは私が欲しいものではありません。
temp4 = Int16(temp1 & 0x0000ffff)//overflow
私のCコードでは、cコンパイラはこれを自己で行うため、問題はありません。
符号付き16ビット整数の最大値が「32767」であれば、「45058」を符号付き16ビット整数にする方法はありますか? –
@mag_zbcこれは明らかに、CまたはJavaで起こるであろうキャストを切り捨てることになっています。 – Sulthan