首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么在Swift中从数据转换到Int16给出了错误的答案

为什么在Swift中从数据转换到Int16给出了错误的答案
EN

Stack Overflow用户
提问于 2022-02-23 02:17:01
回答 1查看 62关注 0票数 -1

在我的应用程序中,我试图将数据转换为Int 16,但我肯定做错了什么。这里是我的问题的一个例子

代码语言:javascript
代码运行次数:0
运行
复制
let x = "0000001110000111"

if let number = Int(x, radix: 2) {
    
    print(number) // This give 903 which is what I would expect 
    
}

let y = Data(x.utf8)

let convertedData = y.withUnsafeBytes {pointer in
    
    return pointer.load(as: Int16.self)
    
}

print (convertedData) // This gives 12336 which is not what I was expecting

let str = String(decoding: y, as: UTF8.self)

print (str) // I wanted to check and make sure I got the correct binary back
            // This gives 0000001110000111 as I would expect 

我在这里做错什么了?

EN

回答 1

Stack Overflow用户

发布于 2022-02-23 02:30:43

不清楚为什么您期望字符串的.utf8视图与其作为整数的解释有任何关系。这些是字符,而不是位(或数字)。您有一个4849字节序列,这自然不会得到任何类似于实际数字的信息。要想看到这个,就说

代码语言:javascript
代码运行次数:0
运行
复制
for c in y { print(c) }

顺便说一句,将字符串转换为数据的通常方法是

代码语言:javascript
代码运行次数:0
运行
复制
let y = x.data(using: .utf8)

把它转换回来的方法是

代码语言:javascript
代码运行次数:0
运行
复制
let str = String(data: y!, encoding: .utf8)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71230595

复制
相关文章

相似问题

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