首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从数据中读取空终止字符串?

如何从数据中读取空终止字符串?
EN

Stack Overflow用户
提问于 2022-10-19 18:30:12
回答 2查看 34关注 0票数 2

iOS/Swift库提供一个包含空结束字符串的Data对象。当通过调用String将其转换为String(data: dataInstance, encoding: .utf8)时,返回的String"\0"结尾。现在的问题是,如何在不附加“0”的情况下将Data实例转换为String?也就是说,如何在末尾省略空终止字符?

尝试只是.trimmingCharacters(in: .whitespacesAndNewlines)没有任何效果,所以你的建议是非常感谢的。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-19 18:44:16

一种可能的解决方案:确定终止零的索引,并仅转换数据的前一部分:

代码语言:javascript
运行
复制
let data = Data([65, 66, 0, 67, 0])
let end = data.firstIndex(where: { $0 == 0 }) ?? data.endIndex
if let string = String(data: data[..<end], encoding:.utf8) {
    print(string.debugDescription) // "AB"
}

如果数据不包含空字节,那么所有内容都将被转换。

票数 2
EN

Stack Overflow用户

发布于 2022-10-19 19:06:05

您可以执行一些指针操作,并使用init(cString:)初始化器,它接受一个以空结尾的字符串。

代码语言:javascript
运行
复制
let resultString = data.withUnsafeBytes { buffer in
    guard let pointer = buffer.baseAddress?.assumingMemoryBound(to: CChar.self) else { 
        return "" 
    }
    return String(cString: pointer)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74130250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档