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

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

C语言char数值的转换函数
我想实现下面的功能:
unsigned char ucTest[5] = {”};
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 = %xn" , ui);
return 0;
}

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

相关文章:

你感兴趣的文章:

标签云: