如何使用长度为4(是字符串文字)的char数组表示4字节整数?
我想使用长度为4的字符串文字来替换4字节整数,该整数将在本案例中使用。
我想这样写:
case "\x0ATst":
printf("FOUND TIME STAMP");
break;
不:
case 0x7473540A:
printf("FOUND TIME STAMP");
break;
由于主要代码更易于阅读。
我在Google上搜索“将字符串转换为int”,但仅找到了
atoi()
之类的答案。 最佳答案
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的耐久性,因此它仍然不是很好的做法。