Swift从Int的数组(活动/非活动状态)构建十六进制,并获得十六进制的整数形式

时间:2016-09-12 15:58:19

标签: ios swift hex

我们可以说周末日活跃或不活跃。我需要使用Integer来表示我标记为活动或非活动的系统,以检索此整数,我需要使用数组[1, 1, 1, 1, 1, 1, 1]。因此,如果你看到这个数组的整个星期都标记为有效,并且在十六进制中它是0000007F

如果我使用[0, 0, 0, 0, 0, 0, 1]此字符串,则表示十六进制= 00000001。所以我的问题是如何从数组创建十六进制,然后将其形成为Integer。因此,对于0000007F,它应该是127。

我认为应该是这样的:

让array = [1,1,1,1,1,1,1] let hexadecimal = array.toHexadecimal let intNumber = hexadecimal.toInt

print(intNumber)//打印127

另外我猜它可以是一个像[0,1,1,1,1,0,1]这样的整数的数组,这意味着星期一和星期三到星期六(包括)都是活跃的日子。

1 个答案:

答案 0 :(得分:1)

您可以使用reduce方法来总结二进制数组(受此answer启发)并使用String(radix :)初始化程序将整数转换为六进制字符串:

Swift 2.3•Xcode 8 GM

let binaryArray =  [1, 1, 1, 1, 1, 1, 1]
//
let integerValue = binaryArray.reduce(0, combine: {$0*2 + $1})

let hexaString = String(integerValue, radix: 16)  // "7f"

Swift 3•Xcode 8 GM

let binaryArray =  [1, 1, 1, 1, 1, 1, 1]

let integerValue = binaryArray.reduce(0, {$0*2 + $1})
let hexaString = String(integerValue, radix: 16)  // "7f"