c语言 二进制的byte数组转化为int数组

Python010

c语言 二进制的byte数组转化为int数组,第1张

如果byte里面保存的是数值,那么你可以调整顺序(低位在前,高位在后)之后,通过memcpy直接转换:

memcpy(&intVar, byteArray, sizeof(int))

如果byte保存的是数字的字符,那么你需要进行转换,具体如何转换,要看byte里面保存的是什么格式了。

从高字节到低字节,依次输入(即:x1->x2->x3->x4)

x = ((int)x1<<24) + ((int)x2<<16) + ((int)x3<<8) + ((int)x4)

写成宏:

#define change(x1,x2,x3,x4) ((int)x1<<24) + ((int)x2<<16) + ((int)x3<<8) + ((int)x4)

调用:

x = change(x1,x2,x3,x4)

#include<stdio.h>

#include<math.h>

#include<string.h>

#include<conio.h>

void main(){

 int exc_n(char ch[])int pnum=0

 do{//套用了我之前写的一个转换函数,输出有点勉强。。。(固定输出头0x0...) 

  char ch[10]={0}char spr[2]={0}//分隔输入

 printf("input the string of num.\n不得不说下,每次输入一个数据,按'x'可以结束程序\n")

 scanf("%s",&ch)

 printf("0x0%x\n",pnum=exc_n(ch))

 //printf("%x",pnum)

 }while(getch()!='x')

}

//该函数将字符串型数字与整型数字单向转换

int exc_n(char ch[]){//,long lnum){

 int size=0int num=0

 if(sizeof(ch[0])>0)

   size=strlen(ch)int i=0

   while(size>=0){

    if(ch[size]>47&&ch[size]<58){num=num+(ch[size]-48)*(int)pow(10,i++)

    }

    size--

    //

   }

   return num

}