Ваши данные не в кодировке Base64.Это закодировано в шестнадцатеричном формате.Вам необходимо расшифровать его в шестнадцатеричном формате, а не использовать base64EncodedData
.
Сначала вам нужно отбросить первые два символа (\x
):
let hex = dataarr[0].dropFirst(2)
Затем вам нужен методпреобразовать гекс в данныеЕсть много способов.Вот один из них:
extension Data {
init?<S: StringProtocol>(hexString: S) {
guard hexString.count % 2 == 0 else { return nil } // Must be even number of letters
var bytes: [UInt8] = []
var index = hexString.startIndex
while index != hexString.endIndex {
let secondIndex = hexString.index(after: index)
let hexValue = hexString[index...secondIndex]
guard let byte = UInt8(hexValue, radix: 16) else { return nil } // Unexpected character
bytes.append(byte)
index = hexString.index(after: secondIndex)
}
self.init(bytes)
}
}
С этим, расшифруйте его:
if let data = Data(hexString: hex),
let image = UIImage(data: data) {
// ... use image
}