【发布时间】:2024-01-18 14:20:02
【问题描述】:
快速问题:由于 int 是 2 个字节而 char 是 1 个字节,我想将一个 int 变量存储在 2 个 char 变量中。 (如第一个字符的第 1-8 位,第二个字符的第 9-16 位)。使用 C 作为编程语言。
我怎样才能做到这一点?会是这样的:
int i = 30543;
char c1 = (char) i;
char c2 = (char) (i>>8);
做这份工作?
我不知道将 int 转换为 char 是否只会丢弃 9-16 位。
【问题讨论】:
-
您无法确保
int是两个字节,但是您可以使用stdint.h中的int16_t,它保证为2 个字节宽。这是一个有趣的问题,但我认为您找不到特定于char的答案,但是如果您考虑一下,将无法在char中存储超过CHAR_BIT位,因此演员表不需要。 -
"int is two bytes" 提出了一个问题,您使用的是什么编译器? Int 通常是 32 位,所以现在在 32 位和 64 位环境中都是 4 个字节。
-
我不确定atm,因为它安装在大学PC上,但我的同学告诉我,它是两个字节。不过最好使用 int16_t,100% 肯定,所以谢谢!
-
发布的代码将导致编译器发出有关丢失数据和/或折叠数据的警告。建议在每个语句中添加 &0xFF