首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

C语言char数值的转换函数解决办法

2012-07-20 
C语言char数值的转换函数我想实现下面的功能:unsigned char ucTest[5] {\0}unsigned int uiucTest[0

C语言char数值的转换函数
我想实现下面的功能:
unsigned char ucTest[5] = {'\0'};
unsigned int ui;
ucTest[0] = 0x01;
ucTest[1] = 0x02;
ucTest[2] = 0x03;
ucTest[3] = 0x04;
我想得到 ui = 0x01020304,也就是连续的4个字节的char数值组成一个int的数值。有现成的函数吗

如果没有,要是自己写转换函数,能提供一下思路吗?
(难道非得用一个bit一个bit的数值加(2^n)吗,但是C里面没有现成的求幂运算函数,所以暂时没有好的思路)

[解决办法]
memcpy(&ui, ucTest, sizeof(ui));
ui=ntohl(ui);
[解决办法]
写的有点小错误哈,,宏定义里,要对ui取地址.
所以会出现core dump
如下:
#include <stdio.h>

#define CHAR2INT(str,ui) {\
*(unsigned char*)&ui = str[3];\ 
*((unsigned char*)&ui + 1) = str[2];\
*((unsigned char*)&ui + 2) = str[1];\
*((unsigned char*)&ui + 3) = str[0];}


int main(void)
{
unsigned char ucTest[5];
unsigned int ui;
ucTest[0] = 0x01;
ucTest[1] = 0x02;
ucTest[2] = 0x03;
ucTest[3] = 0x04;

CHAR2INT(ucTest , ui);
printf("ui = %x\n" , ui);
return 0;
}

热点排行