4

我有一个返回 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);
4

1 回答 1

4

据我所见,您在此处使用gcc参考资料,并且我们知道gcc 支持通过联合明确的类型双关语,那么这可能是一个合理的解决方案:

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值。我没有添加任何输出,因为我不确定您使用什么输出。

于 2014-11-09T03:52:43.750 回答