天天看點

怎樣把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;
}      

繼續閱讀