2015-02-08 60 views
2

我收到一個Int從我的服務器我想在爆炸對位掩碼的陣列。因此,舉例來說,如果我的服務器給我的號碼3,我們得到兩個值,一個二進制1和二進制2斯威夫特 - 將詮釋爲二進制表示

如何在斯威夫特這樣做呢?

+0

大概在這個[](http://stackoverflow.com/questions/25267089/convert-a-two-byte-uint8-array-to-a-uint16-in-swift)你可以找到興趣:讓數據= NSData(數組) – GeekRiky 2015-02-08 23:49:20

回答

3

,我不知道有任何好的內置的方式,但你可以這樣做:

var i = 3 
let a = 0..<8 

var b = a.map { Int(i & (1 << $0)) } 
// b = [1, 2, 0, 0, 0, 0, 0, 0] 
4

你可以使用:

let number = 3 
//radix: 2 is binary, if you wanted hex you could do radix: 16 
let str = String(number, radix: 2) 
println(str) 

打印 「11」

let number = 79 
//radix: 2 is binary, if you wanted hex you could do radix: 16 
let str = String(number, radix: 16) 
println(str) 

打印 「4F」

+0

這應該是接受的答案 – 2017-03-31 02:22:32

1

這裏是一個簡單的實現:

func intToMasks(var n: Int) -> [Int] { 
    var masks = [Int]() 
    var mask = 1 
    while n > 0 { 
     if n & mask > 0 { 
      masks.append(mask) 
      n -= mask 
     } 
     mask <<= 1 
    } 
    return masks 
} 

println(intToMasks(3)) // prints "[1,2]" 
println(intToMasks(1000)) // prints "[8,32,64,128,256,512]"