假设我们可以将周末标记为活动或不活动。我需要使用 Integer 来表示我标记为活动或非活动的系统,要检索这个整数,我需要使用数组
[1, 1, 1, 1, 1, 1, 1]
。因此,如果您看到该数组一周中的每一天都标记为活动状态并且采用十六进制,则为 0000007F
。
如果我使用
[0, 0, 0, 0, 0, 0, 1]
这个字符串,则意味着十六进制 = 00000001
。所以我的问题是如何从数组创建十六进制,然后从中获取 Integer
。所以如果有 0000007F
,它应该是 127。
我认为应该是这样的:
令数组 = [1, 1, 1, 1, 1, 1, 1] 让十六进制 = array.toHexadecimal 让 intNumber = 十六进制.toInt
print(intNumber) // 打印 127
我猜它也可以是一个带有 [0, 1, 1, 1, 1, 0, 1] 这样的整数的数组,这意味着星期一和星期三到星期六(包括)是活跃日。
您可以使用reduce方法来总结您的二进制数组(受此answer启发)并使用String(radix:)初始化器将您的整数转换为十六进制字符串:
Swift 3 • Xcode 8 或更高版本
let binaryArray = [1, 1, 1, 1, 1, 1, 1]
let integerValue = binaryArray.reduce(0, {$0*2 + $1})
let hexaString = String(integerValue, radix: 16) // "7f"