[英]How to read a packet that used memcpy
uint8_t sendPacket[200];
float a = 22.0f;
char buffer[4] ={0x01,0x02,0x03,0x04};
memcpy(&buffer, &a, sizeof(a));
memcpy(sendPacket+92,buffer,sizeof(buffer));
HAL_UART_Transmit(&huart7, (uint8_t*)sendPacket, length+5, 0xFFFF);
我使用上面的代碼,但我知道 memcpy 復制了 memory,但是當我查看 Packet 中的值時,值出來的很奇怪
上面還有其他的和弦,但是幾乎是重復的,所以我把它拿出來了
應該是通過藍牙傳輸的,但是在通過藍牙傳輸的地方正常出來了,但是出來的時候很奇怪
首先想把stm32中的數據包發到別的地方取值,live watch的結果和圖片一樣
a 包含浮點值
要再次讀取浮點數,您可以例如將 memcpy 轉換為浮點數:
float a_received = 0.0f;
memcpy(&a_received, &sendPacket[92], sizeof(a_received));
正如 user694733 指出的那樣,使用 memcpy。
“當我查看 Packet 中的值時,值出來的很奇怪”
當您查看sendPacket
時,您看到的是原始字節。 要檢查您是否在正確的位置復制了正確的浮點數,您需要將數組中的 4 個字節解釋為浮點值。 這基本上是調試器或printf
會做的事情。
例如,數字22.0f
在 IEE754 浮點數表示中由0x41b00000
表示,因此您應該在數組00 00 b0 41
中看到,例如在小端系統上。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.