簡體   English   中英

在char數組中存儲整數

[英]Storing integer in the array of char

我一直在閱讀此線程將一個int存儲在char數組中?

我需要將int存儲在char數組中。

因此,我閱讀了上一個主題,並嘗試制作自己的演示。 但這很行不通,試圖弄清楚為什么不能很長時間。 也許您可以給我一些線索或想法?

#include <stdio.h>

int main(void) {

    char buffer[4];
    int y = 2200;
    buffer[0] = (y >> 0) & 0xff;
    buffer[1] = (y >> 8) & 0xff;
    buffer[2] = (y >> 16) & 0xff;
    buffer[3] = (y >> 24) & 0xff;

    int x = buffer[0];

    printf("%i = %i\n", y, x);
}

輸出量

gcc tmp.c && ./a.out
2200 = -104
int x = buffer[0];

buffer[0]處的char值(隱式轉換為int)復制到x 它不會將buffer開始的第一個sizeof int字節解釋為int ,這是您想要的(想想這種行為在常見情況下會巧妙地破壞的邪惡方法,即char c = 10; int x = c 。 !)。

意識到buffer[n]不返回內存地址,而是返回char 要將sizeof int元素解釋為一個完整的int只需先將buffer轉換為int*

int x = *((int*)buffer);

對於偏移量n (以int s為單位,而不是char s):

int x = *((int*)buffer + n);

另請注意,您的代碼假定sizeof int == 4 ,這是不能保證的。

x = buffer[0]不執行您想要的操作。 嘗試memcpy(&x,buffer,sizeof(x)) (您需要添加#include <string.h> 。)

暫無
暫無

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

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