2016-09-14 3 views
2

У меня есть двоичный код 0000010, который представлен в виде массива ints. Из этого двоичном я получаю Integer:Swift. Получить двоичную строку из целого числа

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

, но когда я хочу, чтобы инвертировать операцию, чтобы получить String:

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

Похоже, что radix сокращает некоторые биты, если они равны 0, как вернуть еще 5 нулей?

+0

Вы действительно хотите * строка *, или вы хотите массив обратно? –

ответ

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

Хотя этот фрагмент кода может решить вопрос, [включая объяснение] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. –

2

Конструктор String не может знать, сколько нулевых бит Integer имел до преобразование. Тебе придется самому справиться с этим.

Кстати, Int также имеет конструктор базисное, для преобразования строк в Int:

Int("0000010", radix: 2) // Returns 2 
Смежные вопросы