2017-09-05 2 views
0

J'ai besoin de stocker des codes de couleurs dans un tableau [Int], mais j'ai de grandes différences entre Java et Swift. Faites-moi savoir comment convertir ce code en Swift.Comment stocker les codes de couleurs dans [Int] Swift

code 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 

Avec Swift

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

J'ai essayé de supprimer le caractère FF ci-dessus, mais je n'aime pas le résultat.

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

Merci.

+1

Ne stockez pas les codes de couleur en tant que 'Int' en premier lieu. –

Répondre

2

Vous testez sur un appareil 64 bits, où Int est Int64 par défaut et ne déborde pas après 2147483647. Si vous voulez travailler explicitement 32 bitsInt valeurs, vous pouvez utiliser Int32:

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

Mais vous pouvez pas, car cela génère un avertissement du compilateur.

Entier littéral '4284506367' déversoirs lorsqu'ils sont stockés dans 'Int32'

Pourquoi?

Parce que débordement est pas une bonne chose, ni qu'il devrait être utilisé dans un produit. N'utilisez pas 32 bitsInt s pour stocker les codes de couleurs les plus grands. Utilisez Int64 à cette fin.