如何使用长度为4的char数组(它是字符串文字)来表示4字节整数?
我想使用长度为4的字符串文字来替代4字节整数,该整数将在本案例中使用。 我想这样写:
case "\x0ATst":
printf("FOUND TIME STAMP");
break;
不是:
case 0x7473540A:
printf("FOUND TIME STAMP");
break;
主要代码更具可读性。
我在Google上搜索了“将字符串转换为整数”,但仅找到了atoi()
之类的答案。
答案 0 :(得分:0)
switch
仅适用于整数常量,因此根本不够灵活。您不能将case
与表达式,字符串或int
以外的任何其他类型一起使用。
但是在这种情况下,这并不重要,因为您都不应该使用任何形式,因为它们都不易读。而是使用case STAMP:
,其中STAMP
是一些合适的,不言自明的名称。可以是#define
,const
或enum
。
关于如何从4字符串转换为int
,有多种原因导致您不能简单地执行*(int*)"\x0ATst"
(对齐,严格的别名)。有一个解决方法,可以使用联合:
typedef union
{
char str[4];
unsigned int val;
} conv_t;
...
(conv_t){.str = "\x0ATst" }.val
请注意,此代码在很大程度上取决于CPU的耐久性,因此它仍然不是很好的做法。