[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: BINARY FILES



David Fanning wrote:
> 
> mohamed nur (mohamed_nur@my-deja.com) writes:
> 
> > I've been dealing with binary files and every case i had to know before
> > hand the dimensions of the array to setup an IDL variable of the said
> > dimesions and read the unformatted data into.
> >
> > But is it possible or is there a method (in IDL 5.2/5.3) to read it in
> > with no knowledge of the dimensions of the array.
> 
> A free Second Edition IDL Programming Techniques book
> to the first person who can find the simple word I
> embedded in this binary sequence:
> 
> 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1
> 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0
> 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0
> 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0
> 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 1 0 1 1
> 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 1 0
> 
> Cheers,
> 
> David
> 
> P.S. Let's just say this is a *much* easier problem
> than the one you propose. :-)
> 
> --
> David Fanning, Ph.D.
> Fanning Software Consulting
> Phone: 970-221-0438 E-Mail: davidf@dfanning.com
> Coyote's Guide to IDL Programming: http://www.dfanning.com/
> Toll-Free IDL Book Orders: 1-888-461-0155

Hmmmm, David: please count the digits next time -- these truely don't
mnake sense.
Yet, I tried - first padding the string with a few more zero's.

First step:
copy the text into a string (mouse)
IDL> a='0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 1 0 0 0 ...'

Then:
a=strcompress(a,/remove_all)3
print,strlen(a)
;   114   (which divided by 8 is 14.25)
a=a+'000000'
b=bytarr(8,15) 
reads,a,b,format='(120a1)'
value=lonarr(15)
for i=0,14 do
value[i]=long(b[0,i])+2*(b[1,i]+2*(b[2,i]+2*(b[3,i]+2*(b[4,i]+2*(b[5,i]+2*(b[6,i]+2*b[7,i]))))))  
print,string(byte(value)) 

; (doesn't make sense, though ...)


Cheers,
Martin

-- 
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
[[ Dr. Martin Schultz   Max-Planck-Institut fuer Meteorologie    [[
[[                      Bundesstr. 55, 20146 Hamburg             [[
[[                      phone: +49 40 41173-308                  [[
[[                      fax:   +49 40 41173-298                  [[
[[ martin.schultz@dkrz.de                                        [[
[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[