我需要将颜色代码存储到class BaseClass: BaseProtocol {
var baseText: String {
get {
return ""
}
}
var baseNum: Int {
return 0
}
}
class ClassA: BaseClass {
}
class ClassB: BaseClass {
}
var orderedSet = OrderedSet<BaseClass>()
let objA = ClassA()
orderedSet.add(objA)
let objB = ClassB()
orderedSet.add(objB)
数组中,但Java和Swift之间存在很大差异。让我知道如何将此代码转换为Swift。
Java代码
[Int]
使用Swift
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
我尝试删除上面的var test : [Int] = [0xFF000000,0xFFffffff,0xFF00ffff,0xFF6060ff]
print(test) //Output: [4278190080, 4294967295, 4278255615, 4284506367]
字符,但我不喜欢结果。
FF
感谢。
答案 0 :(得分:2)
您正在 64位设备上进行测试,默认情况下Int
为Int64
,并且在2,147,483,647之后不会溢出。如果您想明确使用 32位 Int
值,可以使用Int32
:
var test: [Int32] = [0xFF000000,0xFFffffff,0xFF00ffff,0xFF6060ff]
print(test) //Output: [-16777216, -1, -16711681, -10460929]
但无法,因为这会产生编译器警告。
Integer literal&#39; 4284506367&#39;存储到&#39; Int32&#39;
时会溢出
为什么?
因为溢出不是好事,也不应该在产品中使用。请勿使用 32位 Int
来存储较大的颜色代码。为此目的使用Int64
。