'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 |