在我原来的职位的延续:Using Structs (Bytes) with SWIFT - Struct to NSData and NSData to Struct使用的Structs(包括字节数组)与SWIFT - 结构来NSData的和NSData的以结构
现在我发现,如果我有个字节的结构与字节数组混合它没有正确打包。
例如代码:
struct exampleStruct {
var ModelNumber: Byte
var MajorVersion: Byte
var MinorVersion: Byte
var Revision: Byte
var Message: [Byte]
}
var myStruct = exampleStruct (
ModelNumber: 1,
MajorVersion: 2,
MinorVersion: 3,
Revision: 4,
Message: [0x48, 0x45, 0x4C, 0x4C, 0x4F] // HELLO
)
println(myStruct.Message)
返回正确阵列的[72,69,76,76,79]
然而,值时,我这个结构转换为NSData的使用:
// Struct to NSData.
var data = NSData(
bytes: & myStruct,
length: sizeof(exampleStruct)
)
我得到意想不到的结果: “data:< 01020304 00000000 108c91fd a87f0000>”。我期待“数据:< 01020304 48454c4c 4f>”
这似乎是因为没有设置[字节]数组长度。它可以在SWIFT中设置吗?当我尝试以下操作:
struct exampleStruct {
var ModelNumber: Byte
var MajorVersion: Byte
var MinorVersion: Byte
var Revision: Byte
var Message: Byte[5] // << Set array length 5
}
我收到一条警告,指出:“固定长度数组尚未支持”。
无论如何要解决这个限制?
'[Byte]'是一个Swift'结构数组'而不是C数组。 – 2014-12-04 21:11:09