2017-09-05 11 views
0

[Int]の配列にカラーコードを保存する必要がありますが、JavaとSwiftの間に大きな違いがあります。このコードをSwiftに変換する方法を教えてください。スウィフト[Int] Swift内のカラーコードの保存方法

var test : [Int] = [0xFF000000,0xFFffffff,0xFF00ffff,0xFF6060ff] 
print(test) //Output: [4278190080, 4294967295, 4278255615, 4284506367] 

Javaコード

int[] colorArgbs = {0xFF000000, 0xFFffffff, 0xFF00ffff, 0xFF6060ff}; 
System.out.println(Integer.valueOf(colorArgbs[0]) + " " + 
        Integer.valueOf(colorArgbs[1]) + " " + 
        Integer.valueOf(colorArgbs[2]) + " " + 
        Integer.valueOf(colorArgbs[3])); 

//Output is: -16777216 -1 -16711681 -10460929 

私は上記のFF文字を削除しようとしたが、私は結果を好きではありません。

var test1 : [Int] = [0x000000,0xffffff,0x00ffff,0x6060ff] 
print(test1) //Output: [0, 16777215, 65535, 6316287] 

ありがとうございます。

+1

カラーコードを最初に「Int」として保存しないでください。 –

答えて

2

あなたはIntはデフォルトでInt64で、2,147,483,647後にオーバーフローしない64ビットデバイス上でテストしています。あなたが明示的に32ビットInt値で作業する場合は、Int32を使用することができます。

var test: [Int32] = [0xFF000000,0xFFffffff,0xFF00ffff,0xFF6060ff] 
print(test) //Output: [-16777216, -1, -16711681, -10460929] 

しかし、あなたできない、これはコンパイラの警告が生成されるため。 'のInt32'

なぜに格納

整数リテラル '4284506367' オーバーフロー?

オーバーフローがであるため、良いことはではありませんし、製品にも使用しないでください。 32ビットIntを使用しないでください。大きなカラーコードを保存してください。この目的にはInt64を使用してください。

関連する問題