我需要解码一个UTF-8编码的字符串,我不知道字节数。我知道人物数量。
使用字节数,我会这样做:
NSString(bytes: UnsafePointer<Byte>(bytes),
length: byteCount,
encoding: String.Encoding.utf8.rawValue)
如何使用字符数呢?
答案 0 :(得分:3)
一种可能的解决方案是使用UTF-8 null
进行解码
字节,直到达到所需的字符数
(或发生错误):
UnicodeCodec
(您也可以返回func decodeUTF8<S: Sequence>(bytes: S, numCharacters: Int) -> String
where S.Iterator.Element == UInt8 {
var iterator = bytes.makeIterator()
var utf8codec = UTF8()
var string = ""
while string.characters.count < numCharacters {
switch (utf8codec.decode(&iterator)) {
case let .scalarValue(val):
string.unicodeScalars.append(val)
default:
// Error or out of bytes:
return string
}
}
return string
}
或在错误情况下抛出错误。)
示例:
nil