日期:2014-05-16  浏览次数:20787 次

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;
}