1. 程式人生 > >怎樣把char型陣列轉存為int型陣列

怎樣把char型陣列轉存為int型陣列

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