将4个字符解释为整数

时间:2014-11-09 03:34:37

标签: c xv6

我有一个返回n个随机字节的函数。为了测试,我希望它产生4个随机字节,然后将整数的4个字节分配为随机字节。我有一些有用的东西,但它似乎是我想要做的过多的语法。我只是想看看它是否真的有必要,或者是否能以更好的方式完成

注意:这是在xv6中完成的,没有涉及include的解决方案

int val0 = (((int)buf[0])&0xff);
int val1 = (((int)buf[1])&0xff);
int val2 = (((int)buf[2])&0xff);
int val3 = (((int)buf[3])&0xff);

int number = val0 | (val1<<8) | (val2<<16) | (val3<<24);

1 个答案:

答案 0 :(得分:4)

据我所知,您正在使用此reference here中的gcc,我们知道gcc support type punning through unions explicitly那么这可能是一个合理的解决方案:

union charToInt
{
    char arr[sizeof(int)] ;
    int x ;
} ;

int main()
{
    union charToInt u1 = { .arr = "ab" } ; // or { .arr = "abcd" } if sizeof(int) == 4
}

然后u1.x将保留 int 值。我没有添加任何输出,因为我不确定你用什么输出。