我已成功扫描并从 QR 读取 stringValue。但无法将 stringValue 转换为可读格式。 https://uidai.gov.in/images/resource/User_manulal_QR_Code_15032019.pdf 我尝试使用上述过程进行转换,但未能成功。
1)我已经尝试库转换为 BigInt 并转换为二进制值
let str = String(self.metadataStringValue, radix: 2)
print(str)
2)成功将大整数转换为字节数组
let byteArray = Array(BigUInt(str)!.serialize())
print(byteArray)
3)使用苹果的解压算法(zlib)
4) 从索引 0 读取字节数组的值直到第一个分隔符值“255”,并将该字节数组值转换为编码为“ISO-8859-1”的字符串。
var firstDelimiter = ArraySlice<UInt8>()
var firstDelimiterArray = [UInt8]()
var delimiterIndex:Int = 0
for index in 0..<byteArray.count {
if byteArray[index] == 255 {
firstDelimiter = byteArray[delimiterIndex...index]
delimiterIndex = index + 1
firstDelimiterArray = firstDelimiter.map { $0 }
let data2 = Data(bytes: firstDelimiterArray, count: firstDelimiterArray.count)
print(data2 as NSData)
}
}
5)“ISO-8859-1”编码无法转换为readbale格式(我使用过.isolatin1)