这是swift的代码片段:
var color_info: [UInt32] = []
var r = 0xff
var g = 0xff
var b = 0xff
r = r & 0xf0
g = g & 0xf0
b = b & 0xf0
var index_array = UInt32(r) | (UInt32(g) << 8) | (UInt32(b) << 16)
color_info[index_array]++
为什么我无法使用变量index_array
访问数组?帮助赞赏。
答案 0 :(得分:1)
索引必须为Int
。编译完成后,您的代码很可能会崩溃,因为您有一个空数组并尝试访问不存在的第n个元素。
你可以像这样预先初始化:
var color_info = Array(count: 100, repeatedValue: UInt32(0))
看起来你需要相当大的数组。也许有一种方法可以通过不同的算法和更少的内存来实现您的目标?使用字典可能是一个选项(key = rgb,value = count),它只占用图像中实际存在的颜色而不是数组。我怀疑对于大型图像来说这会很慢......但是......