[英]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.