스토어 : (부호없는 int에 4 개의 문자를 저장)
int store(uint32_t * reg, unsigned char c[4])
{
*reg = 0;
for(int i=0;i<4;i++)
{
*reg = (*reg<<8) | c[i];
}
return 0;
}
로드 : (부호없는 INT 4 개 문자로드)
int load(uint32_t * reg, unsigned char c[4])
{
for(int i=0;i<4;i++)
{
c[i] = *reg;
*reg = *reg>>8;
}
return 0;
}
사용 예 :
int main()
{
unsigned char c[4] = {'a','b','c','d'};
uint32_t reg;
printf("%c",c[0]); //it prints 'a'
store(®,c);
c[0] = 'e';
printf("%c",c[0]); //it prints 'e'
load(®,c); //load
printf("%c",c[0]); //it prints 'a' again
return 0;
}
당신이 char 배열로 다시로드하지 않으려면, char 포인터로 액세스하려면 예 :
int main (int argc, char const *argv[])
{
unsigned char c[4] = {'a','b','c','d'};
uint32_t reg;
store(®,c);
unsigned char *cpointer = (unsigned char *) ®
for(int i=0;i<4;i++)
{
printf("%c",cpointer[i]); //access the 4 chars by a char pointer
}
return 0;
}
메모리 주소가 역순으로 만들어 지므로이 방법으로 'dcba'가 출력됩니다.
왜 char 배열을 char 배열에 직접 할당하지 않을까요? – Mat
당신이하려는 일과 왜 그 일을하려고하는지에 대해 더 정확하게 말할 수 있습니까? –
'32bitint1'과 같은 변수 이름에는 어떤 컴파일러에 문제가 없습니까? –