将字符数组转换为uint8_t
Casting char array to uint8_t
我在Arduino库中有一个这样的函数定义:
bool RHReliableDatagram::sendtoWait(uint8_t * buf, uint8_t len, uint8_t address)
当我使用:
uint8_t timePacket[] = "timen";
sendtoWait(timePacket, sizeof(timePacket), SERVER_ADDRESS)
我在pyserial的readline()函数中得到了一个在另一端(SERVER_ADDRESS)带有"time"的完美字符串,该字符串使用utf-8编码完美解码。
现在我需要使用相同的sendtoWait()
函数发送一些字节。我首先定义一个 60 字节的 char 数组
char packetBuff[60] = "";
然后我获取每个字节并将其转换为字符
char value = (char)flash.readByte(dumpCounter++);
然后将每个值放在 char 数组中,如下所示:
packetBuff[charNo] = value;
找到换行符后,我尝试使用sendtoWait()
函数再次发送 char 数组:
if (value == 'n') {
Serial.println(packetBuff);
uint8_t buff[charNo];
for (int i = 0; i < charNo; i++) {
buff[i] = packetBuff[i];
}
sendtoWait(buff, charNo, SERVER_ADDRESS))
charNo++;
但是,尽管Serial.println(packetBuff)
显示了正确的字符,例如"1559105487"(unix 时间戳),buff
数组无法正常工作,并显示随机字符,例如分号、随机个位数等。
如何正确转换 char 数组并使用发送"time"之类的sendtoWait()
函数正确发送它?
编辑:完整代码:
int charNo = 0;
char packetBuff[60] = "";
if (dumpCounter != 0) {
dumpCounter--;
}
while(dumpCounter < currentFlashLoc) {
char value = (char)flash.readByte(dumpCounter++);
packetBuff[charNo] = value;
if (value == 'n') {
Serial.println(packetBuff);
uint8_t buff[charNo];
for (int i = 0; i < charNo; i++) {
buff[i] = packetBuff[i];
}
if (manager.sendtoWait(buff, charNo, SERVER_ADDRESS)) {
// packet sent successfully
}
charNo = -1;
}
charNo++;
}
像这样强制转换字符数组:
sendtoWait((uint8_t*)packetBuff, sizeof(packetBuff), SERVER_ADDRESS)
工作正常。buff
不是必需的。
相关文章:
- 从值小于256的uint16到uint8的Endian安全转换
- 将 Uint8(浮点AUDIO_F32)转换为int16_t(16 位 PCM)
- 错误:无法将'uint8* {aka unsigned int*}'转换为"常量emxArray_uint8_T*"?
- 将具有不同字段的结构转换为 uint8 的数组
- 如何将 uint8 列表转换为其相应的有符号值
- 如何将元素从 Swift 中的 [UnsafeMutablePointer<UInt8>] 转换为 C++ 中的 UInt8 *
- 从字符串转换为 uint8,反之亦然
- 将 UInt8 C++值转换为 C# 字节数组
- 警告缩小转换范围(uint32 到 uint8)
- 将 uint8 转换为范围为 0-1 的浮点数的最有效方法
- 将 Uint8 转换为无符号字符 RGB 值
- 将uint8的矢量转换为ascii十六进制字符串的更好方法
- 从std::string转换为uint8
- Jagged Uint8数组转换为C#字节
- 将"wstring"转换为"const UInt8 *"
- 我如何将bitset转换为字节/uint8数组
- 如何在c++中将UINT8转换为UINT32 ?
- 我如何将uint8_t (SDL中的Uint8)转换为字符串
- 将uint8 vector类型的元素转换为stringstream类型
- Node.js 6增加了将Buffer.from()转换为const UInt8*的功能