我已经加密了一个在UInt8中输出的字符串
[107, 200, 119, 211, 247, 171, 132, 179, 181, 133, 54, 146, 206, 234, 69, 197]
如何将其转换为可以连接成URL的数据类型,然后可以使用PHP解密?我试图将其转换为base64或十六进制,但我找不到任何有关如何操作的信息。
答案 0 :(得分:0)
let bytes: [UInt8] = [107, 200, 119, 211, 247, 171, 132, 179, 181, 133, 54, 146, 206, 234, 69, 197]
let base64String = bytes.withUnsafeBufferPointer { buffer -> String in
let data = NSData(bytes: buffer.baseAddress, length: buffer.count)
return data.base64EncodedStringWithOptions([])
}
print(base64String)
输出:
a8h30/erhLO1hTaSzupFxQ==
答案 1 :(得分:0)
数据无法直接转换为字符串,因为许多数据字节不能表示为字符串字符。显而易见的选择是编码为Base64或十六进制。 Apple不提供和转换为十六进制,因此最佳选择似乎是Base64。
let bytes: [UInt8] = [107, 200, 119, 211, 247, 171, 132, 179, 181, 133, 54, 146, 206, 234, 69, 197]
// Convert to NSData
let data = NSData(bytes: bytes, length: bytes.count)
// Convert to Base64
let base64String = data.base64EncodedStringWithOptions([])
print("base64String: \(base64String)")
输出:
base64String:a8h30 / erhLO1hTaSzupFxQ ==
在大多数情况下,Base64需要进行URL编码,因为可能包含'/'和/或'='字符,具体取决于URL字符串的部分。有关网址编码信息,请参阅此SO answer。