簡體   English   中英

如何將2個char變量合並並存儲在整數變量中?

[英]how can i combine and store 2 char variables in an integer variable?

考慮以下數據:

char a=12,b=30;
int c=0;

我希望變量c將組合值存儲為c = 1230。 即int數據類型有2個字節,第一個字節應保存a的值,第二個字節應保存b的值。 PS:使用運算符的解決方案會很棒,也歡迎其他任何建議。

您可以使用按位運算作為替代。 一個char保證為1個字節,因此您可以通過移動一個char來存儲它,然后使用OR運算將它們組合起來:

int combine(char c1, char c2) {
    return c1 | c2 << 8;
}

然后,您可以使用AND和右移將它們再次拆分:

void split(int in, char *c1, char *c2) {
    *c1 = in & 0xff;
    *c2 = in >> 8;
}

但是,這不會給您想要的輸出,但是會在一個int中存儲兩個字符。

1230 = 12 * 100 +30。因此您似乎可以將a*100+b分配給c

但是,如果ab不在0..99(含)范圍內,則可能無法按您想要的方式工作。

您也可以使用這樣的聯合

typedef union {
        char bytes[2];
        int integer;
} combined;

然后像這樣存儲字符

char a = 12;
char b = 30;

combined c;
c.bytes[0] = a;
c.bytes[1] = b;

和c.integer現在將存儲兩個字符。 但是請注意,由於int通常為32位寬,因此其中16位將是“隨機的”,因此您無法比較以這種方式創建的兩個int 更好的選擇是short

像其他答案一樣,這不會給您想要的輸出,而只是在int中存儲兩個字符的一種方式。

暫無
暫無

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

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