Быстрая проблема выравнивания с UnsafeBytes и UnsafePointer

В следующем коде testP.deviceID а также testP.deviceID1 должно иметь одинаковое значение. Однако testP.deviceID1 содержит 2 (он должен содержать 513). Так что есть что-то фундаментальное, что я не понимаю в отношении выравнивания?

let byteArray:[UInt8] = [ 0x01,0x02,23,24,25,0x01,0x02 ]
let testData = Data(bytes: byteArray )
struct testStruct {
    let deviceID            :UInt16 //0..1
    let byte0               :UInt8
    let byte1               :UInt8
    let byte2               :UInt8
    let deviceID1           :UInt16 //5..6
}

let testP = testData.withUnsafeBytes { (ptr: UnsafePointer<testStruct>) -> testStruct in
    return ptr.pointee
}

print("\(testP.deviceID):\(testP.byte0):\(testP.deviceID1)")

0 ответов

Другие вопросы по тегам