Я пишу протокол bluetooth-пакетов для связи между iPhone и периферийным устройством. Устройство отправит мне несколько бит, возможно, 128 или 256, и протокол связи, который я использую, позволит мне получить доступ к этим входящим данным в качестве некоторой переменной NSData. Мой вопрос: могу ли я взять байты из NSDATA или напрямую использовать NSData, чтобы вставить байты в структуру с записями, которые имеют предопределенный размер? Например, в C, вы бы-структуру, как:SWIFT: Вставить байты из NSData to Struct?
struct CD2_CONFIG_TYPE {
uint8_t header; // '<' or '>' start of a new packet from device or base station
uint8_t type; // 'c' indicates device configuration packet
uint8_t devSN[8]; // device serial number
};
и позволяет сказать, что данные, которые мы получили объект NSData, который имеет 8 + 8 + 84 бита, которые являются заголовок, тип и devSN, соответственно. Так что, если я возьму эти биты (или байты) и сделать их указателем используя что-то вроде:
// swift code
fun dataBYtesToPointer(incomingDataPacket: NSData){
var packetBytes = UnsafePointer<UInt8>(incomingDataPacket.bytes)
}
Есть ли способ, чтобы скопировать указатель на структуру и имеет-структуру Header переменные, тип и devSN населенную правильно на основе размера, выделенного для них? В C вы будете использовать memcopy и скопировать этот указатель на структуру. Поэтому я не понимаю, как сделать структуру с предопределенными размерами, как в примере, и я не знаю, как заполнить ее указателем. Любая помощь будет оценена по достоинству.
Я думаю, что ответ на ваш вопрос здесь. http://stackoverflow.com/questions/25079380/swift-how-add-offset-to-memcpy – user3069232