|
int ivalue;
char cvalue[4];
ivalue = cvalue; 또는 cvalue = ivalue; 하실려는 것 맞나요?
몇가지 방법이 있는데요.
간단한 것은 union 구조체를 쓰는거죠.
union AAA
{
int ivalue;
char cvalue[4];
};
다른 방법은 메모리 복사하는 것 입니다.
memcpy( &ivalue, cvalue, sizeof(cvalue) );
꺼꾸로 복사하려면
memcpy( cvalue, &ivalue, sizeof(ivalue) );
*주의* 32비트 컴파일러에서만 int가 32비트라 4byte와 매치됩니다. 64비트 컴파일러에서는 64비트죠 ㅡ.ㅡ
그럼~~ 20000
intothefree 님이 쓰신 글 :
: int형을 byte로 바꾸고 싶습니다. 파일에 쓰려는것인데요
:
: int를 byte로 바꾸어서 fwrite 하면 읽는쪽에서 4바트씩 읽으면 편하게 int를 읽고 싶어서 입니다.
:
: 근데 int를 4byte로 저장하는 방법을 모르겠네요 ㅡ,.ㅡ;;
:
: byte *buffer = new byte[4];
:
: for (int i=0;i<ListBox1->Items->Count;i++)
: {
: filename = ListBox1->Items->Strings[i];
: stream = fopen(filename.c_str(), "rb+");
: fseek(stream,0L,SEEK_END);
: file_len = ftell(stream);
: // buffer = file_len; <<============== 이 부분을 모르겠네요
: fwrite(buffer,sizeof(buffer),1,in);
: fclose(stream);
: }
:
: 주석 부분을 모르겠습니다. 받는쪽에서 4byte 읽어서 크기를 알고싶기 떄문입니다.
: 자질구레한거 자꾸 질문해서 죄송합니다..
: 꾸벅,,,
:
: 그리고요 저기 파일크기 구하는거 저것도 조잡스러운데 깔끔한 방법있으면 추가적으로다가 부탁드립니다.
|