'Swift. Get binary string from an integer

I have binary 0000010 which is represented as an array of ints. From this binary I get an Integer:

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

but when I want to inverse operation to get a String:

let binaryString = String(2, radix: 2) // binaryString = "10"

So seems radix cuts some bits if they are 0, how to return 5 more zeros?



Solution 1:[1]

let binaryString = String(2, radix: 2)
let other = String(count: 8 - binaryString.characters.count, repeatedValue: Character("0")) + binaryString

Solution 2:[2]

The String constructor can't know how many zero bits the Integer had before the conversion. You'll have to handle that yourself.

By the way, Int also has the radix constructor, for converting strings into Int:

Int("0000010", radix: 2) // Returns 2

Solution 3:[3]

Swift 5

var binaryString = String(2, radix: 2)
binaryString = String(repeating: "0", count: 8 - binaryString.count) + binaryString

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Mehdi Mirzaei
Solution 2 Dejan Skledar
Solution 3