binary 파일 읽기 질문입니다.

게시판 IDL Q&A binary 파일 읽기 질문입니다.

3 답변 글타래를 보이고 있습니다
  • 글쓴이
    • #487 Reply
      leecs
      회원

      idl에서 integer (3000,4000) 2차원 배열의 binary파일을 읽으려고 합니다.

      포트란에서는 읽을때 전체를 다 읽지 않고 (3000,200)씩 20번 읽을수 있었는데

      idl에서도 그런 코딩이 가능한지 궁금합니다.

      이전QNA랑 인터넷으로 검색해봐도 잘 안나오네요.

      답변 부탁드려요~ 감사합니다~^^

    • #494 Reply
      jhlee
      Keymaster

      이전 답글에서 제가 잘못 이해하고,  일부 틀리게 적은 부분이 있었습니다. 

      우선 바이너리 파일을 읽기 위해 알고 있는 데이터 포맷을 이용한 빈 배열을 만들때는 indgen이나 findgen 과 같은 인덱스 생성함수가 아닌 intarr나 fltarr와 같은 일반 배열생성함수를 씁니다. 

      또한, 질문의 내용은 바이너리 파일의 일부분만 읽을 수 있느냐? 였던 것 같은데요. 우선은 다 읽은 후에 원하시는 부분을 확인하셔야 할 것 같습니다. integer 타입의 3000*4000 바이너리 파일은 그리 큰 사이즈가 아니기 때문에 큰 문제가 되지는 않는다고 생각합니다.

    • #518 Reply
      leecs
      회원

      제가 예를 잘못 적은거 같네요..^^;

      전구위성자료를 처리해야하는데 int(40340, 14673) 크기의 배열이 총 9개가 들어가고 실제 값을 계산하기 위해서 코드 내부에서 float형으로 변환을 해야합니다. 한번에 모든 파일을 읽으려니 용량도 너무 크고 다른 작업을 할수가 없어서 분할처리를 할려고 합니다. fortran 처럼 binary 파일의 읽기와 쓰기가 byte 단위로 가능한지요.

      바쁘신데 자꾸 질문을 드려 죄송합니다.

      그럼 좋은 하루 보내세요.

      감사합니다.

      • 이 답변은 leecs에 의해 11 years 전에 수정됐습니다.
    • #520 Reply
      Jonghyuk
      회원

      데이터 사이즈가 그만하다면, 부분별로 처리해야 하는 것이 맞겠습니다.

      Byte 단위의 파일 입출력은 당연히 가능합니다.

      block=intarr(3000, 200)

      openr, 1, ‘myfile.dat’

      for i=0, 19 do begin

      readu, 1, block

      ;;;do something

      endfor

      close, 1

      이곳은 관심있는 사람들의 토론의 장소이므로 바쁜 것은 문제될 것이 없습니다.

      환영합니다.

3 답변 글타래를 보이고 있습니다
'binary 파일 읽기 질문입니다.'에 답변달기
글쓴이 정보: