在C中连接hex数

我一直试图连接4个hex数字,似乎无法做到这一点。

例:

int a = 0x01; int b = 0x00; int c = 0x20; int d = 0xF1; //Result should be 0x010020F1 

我使用sprintf和按位操作得到的结果总是切断零,给我1020F1这样的答案,这与我想要的大不相同。 有谁有更好的方法?

假设unsigned int a,b,c,d;

 unsigned int result = (a<<24) | (b<<16)| (c<<8) | d;