Vì vậy, tôi đã tìm ra cách để trích xuất NSData trong nhanh chóng nhưng tôi đang nhận được nhầm lẫn liên quan đến thiết lập nó:Làm việc với NSData trong nhanh chóng
var testBytes : [Byte] = [0x14, 0x00, 0xAB, 0x45, 0x49, 0x1F, 0xEF, 0x15,
0xA8, 0x89, 0x78, 0x0F, 0x09, 0xA9, 0x07, 0xB0,
0x01, 0x20, 0x01, 0x4E, 0x38, 0x32, 0x35, 0x56,
0x20, 0x20, 0x20, 0x00]
var msgData = NSData(bytes: testBytes, length: testBytes.count)
println("\(msgData)")
var length : Int = testBytes.count
var out: NSInteger = 0
let ptr = UnsafePointer<UInt8>(msgData.bytes)
var bytes = UnsafeBufferPointer<UInt8>(start: ptr, count: 28)
Vì vậy, nếu tôi muốn truy cập vào một byte cụ thể tôi có thể có được nó với một cái gì đó như:
let targetAddress = UInt32(bytes[2]) << 16 |
UInt32(bytes[3]) << 8 |
UInt32(bytes[4]) << 0
Bây giờ nói rằng tôi muốn đặt một giá trị với một cái gì đó như:
bytes[11] = UInt8(UInt32(bytes[11]) | 0x0FF)
tôi nhận được một lỗi của Cannot assign the result of this expression)
. Tôi cũng đã thử sử dụng &bytes[11]
mà dường như không bay.
Tôi giả định điều này là do mảng sử dụng một con trỏ đệm không an toàn. Có một cuộc gọi dễ dàng mà tôi đã có một số làm thế nào glossed hơn để làm cho công việc chuyển nhượng một cách chính xác?