![](/img/trans.png)
[英]How to combine multiple char variables with space separated values in a struct variable?
[英]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
。
但是,如果a
或b
不在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.