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