在我的应用程序中,我试图将数据转换为Int 16,但我肯定做错了什么。这里是我的问题的一个例子
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
我在这里做错什么了?
发布于 2022-02-22 18:30:43
不清楚为什么您期望字符串的.utf8
视图与其作为整数的解释有任何关系。这些是字符,而不是位(或数字)。您有一个48
和49
字节序列,这自然不会得到任何类似于实际数字的信息。要想看到这个,就说
for c in y { print(c) }
顺便说一句,将字符串转换为数据的通常方法是
let y = x.data(using: .utf8)
把它转换回来的方法是
let str = String(data: y!, encoding: .utf8)
https://stackoverflow.com/questions/71230595
复制