1

Int32 値を Int16 値にキャストしたい。キャスト時にデータが失われることは私にとって問題ではありません。しかし、aSystem.OverflowExceptionは Int16 型の値が大きすぎるか小さすぎると言っています。

Dim num As Int32 = &HFFFFFFF
Dim num2 As Int16 = Convert.ToInt16(num)
Debug.WriteLine(num.ToString("X4"))
Debug.WriteLine(num2.ToString("X4"))

Int32 &HFFFFFFF を &HFFFF にキャストしたい場合、どうすればよいですか。

どんな助けでも大歓迎です。

4

2 に答える 2

1

私のコメントで言ったように、int16が持っmaxValueMinValueいて、int32が明らかに間にないので、あなたのキャストは無効だと思います。

エラーをより明確に確認するには、次のことを試してください。

 Debug.WriteLine(Int16.MaxValue.ToString)
 Debug.WriteLine(Int16.MinValue.ToString)
 Debug.WriteLine(num.ToString)

ここに画像の説明を入力

あなたの最善の回避策は、変換するたびに int32 から最後の 4 F を削除することです。

 Sub Main()
        Dim num As Int32 = &HFFFFFFF
        Dim num2 As Int16 = Convert.ToInt16(num.ToString("X8").Substring(num.ToString("X8").Length - 4, 4), 16)
        Debug.WriteLine(num.ToString("X4"))
        Debug.WriteLine(num2.ToString("X4"))
        Console.ReadLine()
    End Sub
于 2015-02-24T08:13:57.023 に答える