6
我想了解结构如何在SWIFT内工作。我熟悉.NET如何处理,以及如何它包成字节的结构等使用结构(字节)和SWIFT - 结构到NSData和NSData结构
我发现一些古怪用下面的代码:
struct exampleStruct {
var ModelNumber: Byte!
var MajorVersion: Byte!
var MinorVersion: Byte!
var Revision: Byte!
}
var myStruct = exampleStruct (
ModelNumber: 1,
MajorVersion: 2,
MinorVersion: 3,
Revision: 4
)
myStruct.MinorVersion // << Returns 3
// Struct to NSData.
var data = NSData(
bytes: &myStruct,
length: sizeof(exampleStruct)
)
println("data: \(data)")
println的回报:“数据: < 01000200 03000400>”
我期待的数据实际上是:‘数据显示:< 01020304>’
任何想法,为什么SWIFT是不是打包1个字节为1个字节,而不是它的包装一个字节作为2个字节(1个字节的值和1个字节为00)?
,如果我做了以下的另一面:
var newStruct = exampleStruct(ModelNumber: nil, MajorVersion: nil, MinorVersion: nil, Revision: nil)
var sendBytes:[Byte] = [0x1, 0x2, 0x3, 0x4]
var newData = NSData(bytes: sendBytes, length: sendBytes.count)
newData.getBytes(
&newStruct,
length: sizeof(exampleStruct)
)
newStruct.MinorVersion // << Returns nil
println(newData)
中的println(newData)是正确的,我所期望的价值:< 01020304>
然而,当我访问minorVersion它返回零,不是我期待的3.
有没有办法强制结构尊重一个字节的打包?
谢谢!这工作,并感谢澄清,这是有道理的。 – Mavro 2014-12-04 03:50:11