[英]memcpy in C++ doesn't copy u_int32_t to unsigned char*
我在使用memcpy
function 時遇到問題。
我需要創建一個包含三個部分的unsigned char
數組:id、數據數組的大小、數據數組。 但我還不能做第一部分。
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <vector>
#include <string>
int main() {
u_int32_t OID;
unsigned char *serialized;
OID = (u_int32_t)5;
serialized = new unsigned char[sizeof(u_int32_t)];
memcpy(serialized, &OID, sizeof(u_int32_t));
std::cout << "After inserting OID: <" << serialized << ">\n";
memcpy(serialized, "test", sizeof(u_int32_t));
std::cout << "After inserting \'test\': <" << serialized << ">\n";
}
此代碼生成的 output 是:
After inserting OID: <>
After inserting 'test': <test>
我不明白為什么,在第一種情況下, memcpy
不會將OID
復制到serialized
,而在第二種情況下,它會正確復制字符串test
。
如果你能幫助我,那就太好了。
先感謝您。
解決方案
我在打印serialized
時試圖獲得5
號。 但這是不正確的。 最合適的是做這樣的事情:
u_int32_t answer;
memcpy(&answer, serialized, sizeof(u_int32_t));
std::cout << "Answer: <" << answer << ">\n";
感謝您的回答和評論!
解決方案
我在打印serialized
時試圖獲得5
號。 但這是不正確的。 最合適的是做這樣的事情:
u_int32_t answer;
memcpy(&answer, serialized, sizeof(u_int32_t));
std::cout << "Answer: <" << answer << ">\n";
感謝您的回答和評論!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.