繁体   English   中英

字符串到 const uint8_t*

[英]string into const uint8_t*

我正在用 C++/C 为树莓派 pico 编写一个程序。 Pico has a 2MB of flash memory and it's SDK provides a function which allows to write data to that memory:

void flash_range_program(uint32_t flash_offs, const uint8_t *data, size_t count)

function 的第二个参数是我们要写入 memory 的数据。 我想在 memory 中保存字符串和浮点数,但我不知道将std::stringfloat转换为__const uint8_t*__的最佳(性能方面)方法是什么。

假设std::uint8_tunsigned char (通常是这种情况),您可以简单地访问名为ffloat变量的 object 表示形式

reinterpret_cast<const unsigned char*>(&f)

以及名为sstd::string变量的内容

reinterpret_cast<const unsigned char*>(s.c_str())

相应的大小是sizeof(f)s.size() (或者s.size()+1如果您还想存储字符串的 null 终止符)。

这当然是假设您要存储float变量的 object 表示形式。 如果您想存储序列化表示,则首先转换为适当格式的std::string


uint8_t不是unsigned char的别名的不太可能的情况下,您不允许在显示的强制转换中用uint8_t替换unsigned char 然后,当通过结果指针访问值时,它们会导致别名违规,从而导致未定义的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM