c语言中关于unsigned char和typedef定义类型的问题

在一个程序中看到这样定义unsignedchara[16];另一个程序中有这样typedefunsignedlongINT32U;INT32Ub[4];一个字符型一个整型... 在一个程序中看到这样定义
unsigned char a[16];
另一个程序中有这样
typedef unsigned long INT32U;
INT32U b[4];
一个字符型一个整型,但是它们的数据都是128bit,如果想让a的16进制表示都传给b,应该怎么传?
就是想让b[0]的值刚好是a[0]a[1]a[2]a[3]连起来(都是16进制),以此类推,c能实现么?
展开
 我来答
用QQ名居然违规
2013-09-04 · TA获得超过1110个赞
知道小有建树答主
回答量:1057
采纳率:50%
帮助的人:421万
展开全部

写了一段 你看是否合用

附图:计算结果

前4行结果是计算EFGH的结果示例,即程序原理

main()

{

int i;

unsigned char a[16]="ABCDEFGHIJKLMNO";

typedef unsigned long  INT32U;  

INT32U A[4],b[4];

/*计算示例段*/

A[0]=0x696A6B6C;

A[1]=0x69*0x1000000+0x6A*0x10000+0x100*0x6B+0x6C;

A[2]=(long)105*0x1000000+(long)106*0x10000+(long)107*0x100+(long)108;

printf("Example:%lx\n",A[0]);

printf("%li\n%li\n%li\n\n",A[0],A[1],A[2]);

/*计算示例段*/


for(i=0;i<=3;i++){

b[i]=(long)a[0+i*4]*0x1000000+(long)a[1+i*4]*0x10000+(long)a[2+i*4]*0x100+(long)a[3+i*4];

printf("b[%i]=%\li\n",i,b[i]);}

A[1]=0x65*0x1000000+0x66*0x10000+0x100*0x67+0x68;

printf("%li\n",A[1]);

getch();

}


计算结果

jACKy劉
2013-09-04 · TA获得超过325个赞
知道小有建树答主
回答量:240
采纳率:100%
帮助的人:244万
展开全部
unsigned char a[16];

是定义一个 字符数组a, 长度16; 占用字节: 16

typedef unsigned long  INT32U;

是将 无符号长整形声明为类型 INT32U;

INT32U b[4];

实际等于 unsigned long b[4]

声明了一个 无符号长整型数组 b, 个数: 4, 实际占用字节: 4*4 (在64位系统可能是 4*8);


这个直接内存拷贝即可. 因为正好长度一致~~

memcpy(dest,src,length)

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
御含灵9r
2013-09-04 · TA获得超过4157个赞
知道大有可为答主
回答量:3007
采纳率:0%
帮助的人:2677万
展开全部
可以用这个函数

void *memcpy(void *dest, const void *src, size_t n);
编辑本段功能
从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中

memcpy(b,a,16);

也可以定义另外一个char *pb=(char *) &b[0];
将b转换为char *数组,然后你想对pb一个个赋值都可以的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式