C++ 帮助将字符串转换为 uint8_t
C++ Help converting string to uint8_t
我目前正在使用一个嵌入式系统,该系统将使用串行通信与各种设备进行通信。我为嵌入式板发送和接收的缓冲区使用了一个 uint8_t
变量。我需要修改这些值(最好使用 string
),然后在修改后将它们转换回 uint8_t
。我创建了一个简单的测试代码来搞乱 uint8_t
和 strings
。我遇到的问题是 cout
的输出只显示 "GREE"(不管 myString
的值如何,由于某种原因它总是只有 4 个字符)。我已经尝试了几种方法来完成这项任务,非常感谢您的帮助。也许我错过了一些容易修复的东西?我已经对着电脑快8个小时了。
string myString = "GREETINGS";
const uint8_t *p = reinterpret_cast<const uint8_t*>(myString.c_str());
myString.assign(p, p + sizeof(p));
cout << myString << endl;
输出是:GREE
regardless of the value of myString, it is always only 4 characters for some reason
检查 sizeof(p)
的值。使用 cout
打印它。它是指针的大小。在您的平台上 4
。
正如 @Drew Dormann 指出的(双关语):p
是一个大小为 sizeof(p)
的指针。指针的大小是系统规范,在您的系统上似乎是 4 个字节。 char
是 1 个字节,所以你看到 4 chars
.
所以,我们必须改变尺寸:
string myString = "GREETINGS";
const uint8_t *p = reinterpret_cast<const uint8_t*>(myString.c_str());
myString.assign(p, p + myString.size());
cout << myString << endl;
p是指针。
当您对指针使用 sizeof() 时,您将获得 4 或 8。这取决于您使用的体系结构。对于 x86 - 4、x64 - 8。
myString.assign(p, p + sizeof(p));// assign first 4 symbols to the string
我目前正在使用一个嵌入式系统,该系统将使用串行通信与各种设备进行通信。我为嵌入式板发送和接收的缓冲区使用了一个 uint8_t
变量。我需要修改这些值(最好使用 string
),然后在修改后将它们转换回 uint8_t
。我创建了一个简单的测试代码来搞乱 uint8_t
和 strings
。我遇到的问题是 cout
的输出只显示 "GREE"(不管 myString
的值如何,由于某种原因它总是只有 4 个字符)。我已经尝试了几种方法来完成这项任务,非常感谢您的帮助。也许我错过了一些容易修复的东西?我已经对着电脑快8个小时了。
string myString = "GREETINGS";
const uint8_t *p = reinterpret_cast<const uint8_t*>(myString.c_str());
myString.assign(p, p + sizeof(p));
cout << myString << endl;
输出是:GREE
regardless of the value of myString, it is always only 4 characters for some reason
检查 sizeof(p)
的值。使用 cout
打印它。它是指针的大小。在您的平台上 4
。
正如 @Drew Dormann 指出的(双关语):p
是一个大小为 sizeof(p)
的指针。指针的大小是系统规范,在您的系统上似乎是 4 个字节。 char
是 1 个字节,所以你看到 4 chars
.
所以,我们必须改变尺寸:
string myString = "GREETINGS";
const uint8_t *p = reinterpret_cast<const uint8_t*>(myString.c_str());
myString.assign(p, p + myString.size());
cout << myString << endl;
p是指针。 当您对指针使用 sizeof() 时,您将获得 4 或 8。这取决于您使用的体系结构。对于 x86 - 4、x64 - 8。
myString.assign(p, p + sizeof(p));// assign first 4 symbols to the string