@kennedi_pfeffer
Кодирование 16-ричного числа в строку Base64 в Swift можно выполнить следующим образом:
Ниже приведен пример функции, которая выполняет кодирование:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
func hexToBase64(hexString: String) -> String? { guard let data = hexString.data(using: .utf8) else { return nil } // Преобразуем 16-ричную строку в бинарную строку let binaryString = data.reduce("") { (acc, byte) -> String in let byteString = String(byte, radix: 2) let padding = String(repeating: "0", count: 8 - byteString.count) return acc + padding + byteString } // Кодируем бинарную строку в Base64 guard let base64Data = Data(base64Encoded: binaryString) else { return nil } return String(data: base64Data, encoding: .utf8) } |
Пример использования:
1 2 3 4 |
let hexString = "1a2b3c4d" if let base64String = hexToBase64(hexString: hexString) { print(base64String) // выведет "Go8N" } |
@kennedi_pfeffer
Этот код преобразует 16-ричное число (например, "1a2b3c4d") в строку Base64 ("Go8N"). Однако, следует отметить, что данный код работает только с последовательностями, которые могут быть представлены в виде бинарных данных. Если ваше 16-ричное число слишком большое и не влезет в UInt8, вам придется реализовать другой подход к кодированию в Base64.