Swift中如何将字符串字符转换为UTF-8编码整数?
解决方法
错误原因
你之前的代码里,String(character).utf8返回的是String.UTF8View(一个UTF-8字节的集合),并非单个整数类型,直接调用append会因类型不匹配报错。
正确实现
方式1:处理所有UTF-8字节(支持多字节字符)
如果文件名可能包含中文、emoji这类多字节字符,它们的UTF-8编码由多个字节组成,需要把每个字节都存入数组:
for fileName in allNoteFiles { var utf8CodeArray: [Int] = [] for character in fileName { // 遍历当前字符的所有UTF-8字节 for utf8Byte in character.utf8 { utf8CodeArray.append(Int(utf8Byte)) } } // 后续使用utf8CodeArray的逻辑 }
方式2:仅取每个字符的第一个UTF-8字节(适合单字节字符)
如果确定文件名只有ASCII范围内的字符(数字、英文字母、常见符号),每个字符的UTF-8编码仅一个字节,可直接取第一个字节:
for fileName in allNoteFiles { var utf8CodeArray: [Int] = [] for character in fileName { // 取出字符的第一个UTF-8字节并转成Int if let firstUtf8Byte = character.utf8.first { utf8CodeArray.append(Int(firstUtf8Byte)) } } // 后续使用utf8CodeArray的逻辑 }
补充说明
- Swift的
Character类型自带utf8属性,无需先转成String,效率更高。 character.utf8返回的集合中,每个元素是UInt8类型,转成Int即可存入你的数组。
内容的提问来源于stack exchange,提问作者TrappinNachos
相关产品推荐
相关产品推荐

