将4个字节的数字复制到字符数组

时间:2012-10-26 23:49:32

标签: c

我想将4个字节的数字存储到字符数组中。

uint32 u32_gen;

u32_gen = func(X,Y,Z);

u32_gen is 4 bytes. For example it's value is 65DA929D. I want to store this as:

char buf[100] = {'\0'};
buffer[7]=65;
buffer[8]=DA;
buffer[9]=92;
buffer[10]9D;

我在做什么并且坚持:

int num = 0;

num = ((u32_gen & 0xFF000000) >> 24) ;  num value is 101
num = ((u32_gen & 0x00FF0000) >> 16) ;  num value is 218
num = ((u32_gen & 0x0000FF00) >> 8) ;   num value is 146
num = (u32_gen & 0x000000FF) ;          num value is 157   

我需要将这个十进制值的num复制到每次计算之间的缓冲区[7] .. buffer [10]。我已经阅读了Stackoverflow和其他书籍中的几篇相关文章。我是否必须编写一个程序将此数字从十进制转换为十六进制?

1 个答案:

答案 0 :(得分:0)

你试过了吗?

buffer[7] = (char)num;
...

另一种选择是声明一个这样的联盟:

union data
{
    char s[4];
    uint32 u32_gen;
} myData;

然后做类似的事情:

myData.u32_gen = func(X,Y,Z);
buffer[7] = myData.s[0];
buffer[8] = myData.s[1];
buffer[9] = myData.s[2];
buffer[10] = myData.s[3];