Swift:创建具有已定义值数量的 UInt8 数组
Swift: Create Array of UInt8 with defined number of Values
如何在 Swift 中创建 UInt8
的 Array
?
我已经用下面的代码试过了:
var array: [UInt8] = [UInt8]()
现在我想遍历第二个 UInt
变量 a
:
for var i: Int = 0; i < a.count; i++ {
array[i] = UInt8(a[i]^b[i])
}
但随后出现以下错误:
fatal error: Array index out of range
当我将与 a
-> [0x01,0x01,0x01,0x01,0x01]
相同的位放入变量 array
时,循环工作正常!
有人知道为什么吗?
您可以像这样使用 Array
中的 init(count: Int, repeatedValue: Element)
:
var array = [UInt8](count: 5, repeatedValue: 0x01)
要了解有关数组初始值设定项的更多信息,请查看此处:http://swiftdoc.org/swift-2/type/Array/
您可以使用
第二个数组的计数,以免索引超出范围错误。
var array = [UInt8](count: a.count, repeatedValue: 0x00)
或者你可以在你的循环中使用数组的追加方法。
for var i:Int = 0; i < a.count; i++
{
array.append( UInt8(a[i]^b[i]) )
}
来自Collection Types
在 Swift 文档中:
You can’t use subscript syntax to append a new item to the end of an
array.
有不同的可能解决方案:
创建具有所需大小的数组,如@Fantattitude 所说:
var array = [UInt8](count: a.count, repeatedValue: 0)
for var i = 0; i < a.count; i++ {
array[i] = UInt8(a[i]^b[i])
}
或者从一个空数组开始,追加元素,
正如@Christian 刚刚回答的那样:
var array = [UInt8]()
for var i = 0; i < a.count; i++ {
array.append(UInt8(a[i]^b[i]))
}
但是在你的情况下 "swifty" 方式是
zip()
和 map()
:
的函数式方法
// Swift 1.2 (Xcode 6.4):
let array = map(zip(a, b), { [=12=] ^ })
// Swift 2 (Xcode 7):
let array = zip(a, b).map { [=12=] ^ }
zip(a, b)
returns所有数组元素对的序列
(如果两者中较短的数组用完则停止)。 map()
然后计算每对的 XOR 和 returns 结果为
一个数组。
如何在 Swift 中创建 UInt8
的 Array
?
我已经用下面的代码试过了:
var array: [UInt8] = [UInt8]()
现在我想遍历第二个 UInt
变量 a
:
for var i: Int = 0; i < a.count; i++ {
array[i] = UInt8(a[i]^b[i])
}
但随后出现以下错误:
fatal error: Array index out of range
当我将与 a
-> [0x01,0x01,0x01,0x01,0x01]
相同的位放入变量 array
时,循环工作正常!
有人知道为什么吗?
您可以像这样使用 Array
中的 init(count: Int, repeatedValue: Element)
:
var array = [UInt8](count: 5, repeatedValue: 0x01)
要了解有关数组初始值设定项的更多信息,请查看此处:http://swiftdoc.org/swift-2/type/Array/
您可以使用 第二个数组的计数,以免索引超出范围错误。
var array = [UInt8](count: a.count, repeatedValue: 0x00)
或者你可以在你的循环中使用数组的追加方法。
for var i:Int = 0; i < a.count; i++
{
array.append( UInt8(a[i]^b[i]) )
}
来自Collection Types 在 Swift 文档中:
You can’t use subscript syntax to append a new item to the end of an array.
有不同的可能解决方案:
创建具有所需大小的数组,如@Fantattitude 所说:
var array = [UInt8](count: a.count, repeatedValue: 0)
for var i = 0; i < a.count; i++ {
array[i] = UInt8(a[i]^b[i])
}
或者从一个空数组开始,追加元素, 正如@Christian 刚刚回答的那样:
var array = [UInt8]()
for var i = 0; i < a.count; i++ {
array.append(UInt8(a[i]^b[i]))
}
但是在你的情况下 "swifty" 方式是
zip()
和 map()
:
// Swift 1.2 (Xcode 6.4):
let array = map(zip(a, b), { [=12=] ^ })
// Swift 2 (Xcode 7):
let array = zip(a, b).map { [=12=] ^ }
zip(a, b)
returns所有数组元素对的序列
(如果两者中较短的数组用完则停止)。 map()
然后计算每对的 XOR 和 returns 结果为
一个数组。