:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
10/06/15 01:29
좀 막노가다 하실려면 for 루프 도시면서 charbuf[i] = intbuf[i] + 'a'; 하시면 문자형으로 바꿔서 입력됩니다.
10/06/15 01:44
write 자체가 byte 단위의 전송일텐데 int 배열을 보내려는 의도가 무엇인가요?
그쪽에서 받아서 다시 int 배열을 새로 만들어 낼 건가요? 아니면 숫자를 보내고 싶은 건가요? 정확하게 int 값자체를 보내려면 상당히 복잡할 것 같네요. EZrock 님께서 얘기하신 건 char 범위를 벗어나지 않는 작은 숫자에서만 가능할 것 같습니다. 사용자의 의도가 무엇인지 좀 더 분명히 제시하는 것이 구체적인 답변을 얻을 수 있을 것 같습니다
10/06/15 01:50
int 변수를 char로 변환하시려면 sprintf(string, "%d", some_integers); 와 같이 쓰시면 됩니다. 마치 fprintf를 쓰는 것처럼요.
10/06/15 02:02
제가 유닉스에서 C로 개발한지 한참되어서 정확히는 모르겠습니다만 대략 생각나는 걸 말씀드리겠습니다
일단 무식하게 하는 방법은 int 값을 char 배열에 집어 넣어서 보낸뒤에 다시 atoi 로 바꿔주는 수가 있겠네요. 이때는 int 하나마다 구분자를 두거나 아니면 자릿수를 int의 최대값에 해당하게 설정하고 왼쪽을 0으로 패딩하거나 해야겠죠. 두번째로는 확신은 안갑니다만 write(x,buf,10); 하면 실제로 int형 배열이 전송될 거 같습니다. 그런데 int가 4byte인 머신이라면 첫번째와 두번째 배열은 온전히 전송되고 세번째거는 앞의 두바이트만 가겠네요. 만약 10개짜리 배열이라면 write(x,buf,10)가 아니라 write(x,buf,10 * sizeof(int)); 로 해야 모두 전송이 되겠죠. 그리고 받은 곳에서도 이것을 int형 배열에 매핑해주어야 할 것 같네요. 이부분은 제가 테스트해볼수 없는 상황이라 확신할 수는 업습니다
10/06/15 09:52
문제는 바이너리 형태로 데이터를 보내게 되면 엔디안에 신경을 써 주어야 합니다.
같은 시스템에서 보통 하기때문에 간과하기 쉽고또 그냥 넘어가지는 일이 다반사이긴 합니다만..
|