Как мне получить массив байтов из base64 в Swift 3?

Я перевожу приложение Android на iOS с помощью swift 3. Моя проблема связана со следующим блоком кода Java:

String b64 = "KJT-AAAhtAvQ";
byte[] bytesCodigo = Base64.decode(b64, Base64.URL_SAFE);
System.out.Println(bytesCodigo.length) // 9

Как бы это было в быстром темпе?

Спасибо


person Careuno Merchan    schedule 16.02.2017    source источник
comment
Вы видели этот stackoverflow.com/questions/29365145/?   -  person Dribbler    schedule 17.02.2017
comment
Обычно вам не нужны массивы байтов. Это то, что Data для   -  person Alexander    schedule 17.02.2017


Ответы (1)


Обычно вы просто создаете _1 _ / _ 2_ из строки base-64, а не массива байтов. Однако обратите внимание, что стандартный Data(base64Encoded:) не имеет "безопасного для URL" представления, поэтому вам нужно заменить "-" на "+" и "_" на "/", прежде чем пытаться преобразовать его:

let b64 = "KJT-AAAhtAvQ"
    .replacingOccurrences(of: "-", with: "+")
    .replacingOccurrences(of: "_", with: "/")
let data = Data(base64Encoded: b64)!
print("\(data.count)")

Затем вы могли бы преобразовать это в массив байтов, но зачем вам это делать? Если вы покажете нам, с чем вы это используете, мы можем дать дальнейшие рекомендации. Большинство функций Swift, которые ищут двоичные данные, работают с Data объектами, а не с массивами байтов.

person Rob    schedule 16.02.2017