首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

VC++ UDP 通信中 double 轉 8 字節:memcpy 直接拷貝內存

     編輯:程式設計綜合問答

需求:double(8 字節)轉 char[8] 發送,接收端 memcpy 還原。最簡潔方式:

發送端

double val = 3.14159;
char buffer[8];
memcpy(buffer, &val, sizeof(double)); // 或 *(double*)buffer = val;
sendto(sock, buffer, 8, 0, (sockaddr*)&addr, sizeof(addr));

接收端

char buffer[8];
recvfrom(sock, buffer, 8, 0, ...);
double val;
memcpy(&val, buffer, sizeof(double));

注意事項

  • 字節序:跨平台通信需統一網絡序(大端),用 htond / ntohd(自定義)或協議層規定
  • 對齊:double 要求 8 字節對齊,memcpy 無對齊要求,安全
  • 結構體打包:若放入結構體發送,加 #pragma pack(1) 避免填充字節

C++ 現代寫法

std::array<char, 8> toBytes(double v) {
    std::array<char, 8> arr;
    std::memcpy(arr.data(), &v, 8);
    return arr;
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved