簡體   English   中英

Memcpy uint32_t轉換為char *

[英]Memcpy uint32_t into char*

我用不同的格式和類似的東西進行了一些測試。 我們得到了一個必須將uint32_t放入char *的任務。 這是我使用的代碼:

void appendString(string *s, uint32_t append){
    char data[4];
    memcpy(data, &append, sizeof(append));
    s->append(data);
}

void appendString(string *s, short append){
    char data[2];
    memcpy(data, &append, sizeof(append));
    s->append(data);
}

從字符串到char很簡單,我們必須在char *中添加多個uint。 所以現在我只是這樣稱呼它:

string s;
appendString(&s, (uint32_t)1152); //this works
appendString(&s, (uint32_t)640); //this also works
appendString(&s, (uint32_t)512); //this doesn't work

我絕對不明白為什么最后一個不能正常工作。 我已經測試了轉換的多種變體。 一種方式總是給我輸出(以位為單位):00110100 | 00110101 ...因此,前2位始終為零,其后為11,然后對我來說是一些隨機數..我在做什么錯?

假設stringstd::string ,則使用std::string::append的單參數版本,假定輸入數據為NUL終止。 您的不是,但是append仍然會尋找第一個NUL字節。

512是0x00000100,在小端機器上是0x00 0x01 0x00 0x00。 由於第一個字節為NUL,因此std::string::append()在那里停止。

使用傳遞長度的std::string::append()版本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM