|
질문을 제대로 이해한 건지는 모르겠지만, 이렇게 해 보세요.
short a[] = { 1, 2, 3, 4, 5 };
char buf[10]; // 정수를 저장하기 위한 캐릭터버퍼를 선언합니다.
memset(buf, 0, 10); // 버퍼를 초기화합니다.
// 정수값을 버퍼에 2바이트씩 복사합니다.
for(int i = 0; i < 5; i++)
memcpy(buf + i * 2, &a[i], 2);
// 정수가 버퍼로 제대로 들어갔나 확인하기 위한 부분입니다.
short b;
for(int i = 0; i < 5; i++)
{
memcpy(&b, buf + i * 2, 2); // 버퍼의 값을 정수변수로 복사합니다.
Memo1->Lines->Add(b);
}
김진영 님이 쓰신 글 :
: 안녕하세요?
: 잘 안풀리는 문제가 있어서 질문을 올립니다.
: 실질적으로 해결해야 하는 문제는...
: 정수,문자를 파일로 저장하는 것입니다.
: 파일에 저장하기 해야 문자배열로 만들어야 하는데 itoa()함수말고
: 바이너리 형태의 문자로 바꾸고 싶습니다.
: 지금까진 다음과 같이 하면 되는줄 알았는데 문제가 있더군요.
:
: char str[10];
: short int int_ary[5]={1,2,3,4,5};
: for(int i=0; i<5; i++) {
: *((short int *)&str[i*2]) = int_ary[i];
: }
:
: 아스키 코드 중 초기번호는 제어문자나 특수문자로 되어 있습니다.
: 이부분이 문제가 되는 것 같습니다.
: 실제로 저장해보면 일부분이 저장되는 길이가 정수에따라 다른경우가 생깁니다.
: 일정한 형식을 유지해야 하는데 길이가 달라지니 정상적으로 동작하지 않습니다.
:
: 인터넷등을 찾아 봤지만 이런문제를 언급한 곳을 못찾았습니다.
: 혹시 이런 형태를 다뤄보신 분계시면 답변 부탁드립니다.
:
: 꼭 위와 같은 방법일 필요는 없습니다.
: 정수를 바이너리 형태로 문자와 섞어 문자배여레 저장할 수만 있으면 됩니다.
: 답변주시면 감사하겠습니다.
: 그럼 이만...
:
:
|