2013-06-20 3 views
-1

저는 8 개의 uint32 요소가 있습니다. 각 uint32를 4 개의 uint8로 분해하고 배열의 unsigned char로 서로 다른 uint8을 추가하고 싶습니다. 어떻게 할 수 있습니까?uint32 to unsigned char array

+2

[A UINT8 어레이 \의 [4 \]에 UINT32 값 변환]의 중복 가능성 (http://stackoverflow.com/questions/6499183/converting-a-uint32-value-into-a-uint8 -array4) – devnull

+0

"서로 다른 uint8을 모두 추가 하시겠습니까?" – kamae

답변

1

당신은 조합이

union value 
{ 
    uint32 number; 

    struct bytes 
    { 
     uint8 bytevalue[4]; 
    }; 
}; 
+2

공용체를 사용하는 것에 동의하지만 그 내부 구조체는 쓸데없는 크래프트입니다. 당신은'union value {uint32_t quad; uint8_t 바이트 [4]; };'. – Will

+1

노조가있는 단점은 코드가 엔디안에 따라 달라 지므로 4 개의 개별 바이트의 순서를 지정할 수 없다는 것입니다. 이식성이 중요한 경우, 공용체를 사용할 수 없습니다. – Lundin

0
UINT32 value; 
UINT8 byteval[4]; 

for(int i = 0 < 4; i++) 
    byteval[i] = value >> (i*8); 
0

사용 구조 & 연합 (EU)에 대한 조합의 힘을 사용할 수있다.

typedef struct 
{ 
    uint32 ArrayOf32Bit[8]; 
}Arrayof32bitVar_t; 

typedef union 
{ 
    Arrayof32bitVar_t Var8int32; 
    uint8    Array8char[8*4]; // instead use macro 
}tydefUnion_t; 

func_add 
{ 
    int i 
    tydefUnion_t a; // 

    /*Here update variable a.Var8int32.ArrayOf32Bit*/ 

    int addResult = 0; 
    for(i;i<(8*4);i++) 
    { 
     addResult += a.Array8char[i]; 
    } 
} 
+0

두 번째 typedef가 불완전합니다. – urzeit