2017-09-05 60 views
0

我需要將顏色代碼存儲到[Int]數組中,但在Java和Swift之間存在很大差異。讓我知道如何將此代碼轉換爲Swift。如何在[Int]中存儲顏色代碼Swift

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 

與SWIFT

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

我試圖刪除上述FF的性格,但我不喜歡的結果。

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

謝謝。

+1

首先不要將顏色代碼存儲爲「Int」。 –

回答

2

要測試64位設備,其中IntInt64默認和2,147,483,647後不溢出上。如果你想明確地32位Int值時,您可以使用Int32

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

但是你不能,因爲這會產生一個編譯器警告。

整數時存入 '的Int32'

爲什麼文字 '4284506367' 溢出?

因爲溢出不是一件好事,也不應該在一個產品中使用。請勿使用32位Int s來存儲更大的顏色代碼。爲此,請使用Int64