Я пытался реализовать функцию, которая принимает строку и возвращает строку, состоящую из битов. Я перебираю представление String в utf8 и использую reduce
для добавления следующих букв.
Проблема в том, что Swift не добавил начальные биты, поэтому мне пришлось добавить их вручную. При преобразовании строк, таких как «abcd», «fgh» и т. Д., Он работает нормально, но, например, «abc d» создает строку, в которой отсутствует один бит.
Моя реализация:
extension String {
func toBinary() -> String {
return self.utf8.reduce("", { (result, ui) -> String in
result + "0" + String(utf, radix: 2)
})
}
}
и "abc d" .toBinary () возвращает:
011000010110001001100011010000001100100
когда правильное представление:
0110000101100010011000110010000001100100
Когда я преобразую двоичный файл обратно в строку, он отлично работает для строк без пробелов, но в этом случае он возвращает другую строку, например: "abc @"
Есть ли способ это исправить?