swift, ios. Как перевести отрицательное число в двоичную систему счисление?

Всем привет, подскажите пожалуйста как перевести отрицательное число в двоичную, восьмеричную или в шестнадцатеричную систему счисления? В интернете нашел пару примеров, но они не работают с отрицательными числами

let y = Int("-127", radix: 8)
print (y!) //-87 - неправильно!!! 

let binary = String(1022, radix: 2)
print("Binary : \(binary)") // Binary : 1111111110

let binary = String(-1, radix: 2)
print("Binary : \(binary)") // Binary : -1 ---- неправильно!

на языке джава есть такая функция

Integer.toBinaryString(-1) //11111111111111111111111111111111 - правильно

Есть ли на языке свифт похожая функция? Заранее Благодарю


Ответы (1 шт):

Автор решения: VAndrJ

К сожалению, некоторые подобные вещи в Swift несколько костыльные. Написал extension под Ваш вариант правильно:

extension Int {
    var binaryRepresentation: String {
        (0..<bitWidth).map({ String((self >> $0) & 1) }).reversed().joined()
    }
}

(-1).binaryRepresentation // -> 1111111111111111111111111111111111111111111111111111111111111111
(-10).binaryRepresentation // -> 1111111111111111111111111111111111111111111111111111111111110110
→ Ссылка