通过分隔符分隔包含 UTF-16 BE 文本的uint8_t数组
Separate uint8_t array containing UTF-16 BE text by delimiter
>我正在接收包含 UTF-16 BE 编码文本的缓冲区,如下所示:
uint8_t rx_data[length] = {0x04, 0x24, 0x04, 0x30, 0x04, 0x3C, 0x04, 0x38, 0x04, 0x3B,
0x04, 0x38, 0x04, 0x4F, 0x00, 0x0A, 0x04, 0x18, 0x04, 0x3C, 0x04, 0x4F,
0x00, 0x0A, 0x04, 0x1E, 0x04, 0x42, 0x04, 0x47, 0x04, 0x35, 0x04, 0x41,
0x04, 0x42, 0x04, 0x32, 0x04, 0x3E}
缓冲区包含三个文本字符串,在我的缓冲区中用""或 {0x00,0x0A} 分隔。 我怎样才能通过换行将此文本拆分为字符串,以便得到如下所示的内容:
uint8_t str1[] = {0x04, 0x24, 0x04, 0x30, 0x04, 0x3C, 0x04, 0x38, 0x04, 0x3B,
0x04, 0x38, 0x04, 0x4F}
uint8_t str2[] = {0x04, 0x18, 0x04, 0x3C, 0x04, 0x4F}
uint8_t str3[] = {0x04, 0x18, 0x04, 0x3C, 0x04, 0x4F,
0x00, 0x0A, 0x04, 0x1E, 0x04, 0x42, 0x04, 0x47, 0x04, 0x35, 0x04, 0x41,
0x04, 0x42, 0x04, 0x32, 0x04, 0x3E}
我正在考虑以某种方式将我的数组转换为标准库中的 u16string 或 wstring,以便我可以像这样处理转换后的字符串 smth:
std::wstring s_rx_data = "string1/nstring2/nstring3";
std::wstring delimiter = "n";
size_t pos = 0;
std::string token;
while ((pos = s_rx_data.find(delimiter)) != std::string::npos) {
token = s_rx_data.substr(0, pos);
std::cout << token << std::endl;
s_rx_data.erase(0, pos + delimiter.length());
}
std::cout << s_rx_data << std::endl;
然后将其转换回 3 个带字节的数组。 问题是,如何将缓冲区转换为 c++ 字符串? 或者使用更严格的方法来划分此缓冲区可能更好?就像只是在循环中搜索分隔符,然后将分隔符之前的所有符号复制到新缓冲区。
附言所有这些都发生在STM32 MCU上,所以我没有很大的计算资源。我通过以太网接收此缓冲区,必须将其分开并通过仅支持 UTF-16BE 的 LCD 屏幕上的 UART 打印。我已经结合了C/C++项目,所以我可以使用C或C++方法。
std::wstring_convert<std::codecvt<char16_t,char,std::mbstate_t>,char16_t>convert;
std::u16string u16 = convert.from_bytes(rx_data);
这里有许多分裂的例子。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 将具有不同字段的结构转换为 uint8 的数组
- UINT8数组对INT64的质量化失败,但应该起作用
- 将 UInt8 C++值转换为 C# 字节数组
- C 具有 uint8 数组奇怪行为的结构
- 正在从numpy.uint8的数组中提取无符号字符
- Jagged Uint8数组转换为C#字节
- 我如何将bitset转换为字节/uint8数组
- 转换uint8字节数组到任何WPF渲染对象
- 将UINT32值转换为UINT8数组[4]
- 将uint8的数组传递给函数会减小其大小(c++代码)