怎樣把char型陣列轉存為int型陣列
阿新 • • 發佈:2018-12-31
#include <stdio.h> #include <string.h> typedef unsigned char uchar; typedef unsigned int uint; //轉換函式 //Temp 字元型陣列 //pOut int型陣列 //length 字元型陣列的長度 //這裡假設字元型數組裡包含的都是偶數個元素 //如果是奇數個數,則需要增加如下處理: //檢查length是否是奇數,如果是,動態分配length+1個char大小的陣列 //資料全部清零,並且把Temp的內容拷貝到動態分配的陣列中 //按照下面長度是偶數的情況處理 //釋放動態分配的記憶體 //這裡根據問題要求,應該是以小端序來存放int型別的 //如果更智慧一些,可以寫一個檢查位元組序的函式來處理 void Exchange(const uchar *Temp, uint *pOut, uchar length) { int i = 0; for (; i < length / 2; i++) { //小端序,直接按原來的順序拷貝過去 //如果是大端序,則可以改變一下位元組序 memcpy(pOut, Temp, 2); pOut++;//int型指標後移一位 Temp+=2;//字元型位元組後移兩位 } } //測試程式碼 int main(void) { int i; uint array[20] = {0}; uchar Start[] = {0x80,0xF1,0x58,0x03,0xC1,0xEA,0x8F,0x06}; Exchange(Start, array, sizeof(Start)); for (i = 0; i < 20; i++) { if (array[i] != 0) { printf("0x%04X ", array[i]); } } printf("\n"); return 0; }