将uint16_t整数转换为存储在uint8_t数组中的UTF-8字符串

时间:2016-10-10 16:16:33

标签: c++ utf-8 arduino

我正在开发一个涉及Arduino的项目,该项目正在读取传感器数据并通过BLE连接将其传输到应用程序。我正在使用的传感器库返回一个uint16_t整数值,而BLE库期望uint8_t [20]作为缓冲区。接收端的App将数据解释为UTF-8字节。所以我需要将uint16_t整数转换为UTF-8字符串并将其存储在数组中。

我在15年内没有使用过C ++,所以这是我设法提出的最好的,但它在很多方面都失败了。

// global vars for transmit buffer
static uint8_t transmit_buffer[20];
static uint8_t transmit_buffer_size;

// read sensor data using vendor lib
uint16_t mm = sensor.read();

char buf[6];

transmit_buffer_size = sprintf(buf, "%d", mm);

// copy data buffer to transmit buffer
for(uint8_t i = 0; i < transmit_buffer_size; i++)
    transmit_buffer[i] = buf[i];

// transmit data
transmitter.send(transmit_buffer, transmit_buffer_size);

// zero out the transmit buffer after use
memset(transmit_buffer, 0x00, 20);   

这样做有什么好办法?

0 个答案:

没有答案