Хобрук: Ваш путь к мастерству в программировании

Устройство Swift BLE — записать значение

У меня есть 0x010303757372707764 для записи на устройство ble. Я знаю, как использовать метод writeValue

peripheral.writeValue(data, for: characteristics[i], type: .withResponse)

Но я хочу записать 0x010303757372707764 как данные. Как я могу это сделать?

Дайте мне знать, если вам нужна дополнительная информация! Благодарю вас!


  • Это 72-битное целое число, строка или что-то еще? 12.12.2019

Ответы:


1

Используйте инициализатор последовательности UInt8 для данных:

init<S>(_ elements: S) where S : Sequence, Self.Element == S.Element

Для вашего примера это будет:

let data = Data([0x01, 0x03, 0x03, 0x75, 0x73, 0x72, 0x70, 0x77, 0x64])
12.12.2019

2

Для этого вы должны использовать значение массива UInt8, подобное этому "Массив"

Когда вы записываете данные в Peripheral.writeValue, вы должны передать это значение UInt8 как функцию Data().

Позвольте мне привести один такой пример

пусть CmdRequestTempLogSize = "#requestTempLogSize$"

let writeData = Data(CmdRequestTempLogSize.bytes) //* CmdRequestTempLogSize.bytes помещает ваше значение UInt8*

Для байтов вы можете использовать строковое расширение (сейчас я использую строковое значение для преобразования в байты (UInt8)

public var bytes: Array<UInt8> {
    return data(using: String.Encoding.utf8, allowLossyConversion: true)?.bytes ?? Array(utf8)
}

Надеюсь, что в этом примере вы сможете понять, как преобразовать данные в массив байтов.

12.12.2019
  • Значение, о котором спрашивает этот вопрос, не является строкой UTF8, поэтому этот ответ не применяется. И преобразование строки в данные в [UInt8], а затем обратно в данные слишком сложно. Даже если вы хотите преобразовать строку в данные UTF8, код будет Data(string.utf8). Нет необходимости в опционах. 12.12.2019
  • В вашем примере 0x01, 0x03, 0x03 и т. д. не являются значением UInt8, поэтому в моем примере я просто объясняю ту же логику с массивом UInt8. 13.12.2019
  • Да, но большинство [UInt8] не являются допустимыми последовательностями UTF-8, поэтому строка, которую вы описываете, не может существовать. Эта конкретная строка байтов оказалась из-за того, что все значения меньше 0x80, но это совпадение. Я согласен, что [UInt8] — хороший инструмент для построения данных. Строка — плохой инструмент (если она не представляет текст). 13.12.2019
  • Новые материалы

    Как симулировать серию пенальти на Python с помощью симуляции Монте-Карло, часть 1: генерация функций
    Серия пенальти была огромным испытанием во время чемпионата мира по футболу. Они вызвали много споров в социальных сетях и новостных агентствах. Даже финальный матч турнира решался по..

    AST для разработчиков JavaScript
    TL; DR Эта статья - мое выступление на недавно состоявшейся конференции Stockholm ReactJS Meetup. Вы можете посмотреть слайды здесь..

    5 проектов на Python, которые нужно создать прямо сейчас!
    Добро пожаловать! Python — один из моих любимых языков программирования. Если вы новичок в этом языке, перейдите по ссылке ниже, чтобы узнать о нем больше:

    Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
    DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

    «Очень простой» эволюционный подход к обучению с подкреплением
    В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

    Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
    Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

    Фишинг — Упаковано и зашифровано
    Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..