# Re: convert a decimal to 32 bit unsigned binary

From: cheryl Ma <xiaoyancloud_at_nyahnyahspammersnyahnyah>
Date: Tue Feb 19 2013 - 10:27:19 MST

Thanks, Dave.

Below is a fortran code which is provided by Andrew Mai (Thanks Andrew !).
cv in the code is what I want.

program dumpbits
implicit none

integer :: i,ic,icv
character(len=32) :: c,cv

i = 36
print '(b32.32)',i

write(c,'(b32.32)') i

do ic=1,32
icv=33-ic
cv(icv:icv)=c(ic:ic)
enddo

print '(a32)',cv

end

On Tue, Feb 19, 2013 at 11:54 AM, Dave Allured - NOAA Affiliate <
dave.allured@noaa.gov> wrote:

> Xiaoyan,
>
> Oops, my mistake. I thought that the digits of "36" meant day numbers 3
> and 6. By coincidence, it really is the encoded value of the 3rd and 6th
> bits, in other words 36 = 2^(3-1) + 2^(6-1). Sorry for the confusion.
>
> Returning to your original question, use the NCL function "touint" to
> convert other NCL data types (numbers and strings) to NCL 32-bit unsigned
> binary. The following example converts "36" as an NCL string type to data
> type "uint" which is NCL 32-bit unsigned binary. Is this what you are
> looking for?
>
> x = "36" ; NCL string type
> y = touint (x)
> print (y)
>
> Output:
> Variable: y
> Type: uint
> Total Size: 4 bytes
> 1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> (0) 36
>
> "uint" and other NCL data types are explained on this page:
> http://www.ncl.ucar.edu/Document/Manuals/Ref_Manual/NclDataTypes.shtml
>
> If this is not what you want, it might be helpful if you show us the
> Fortran code that you mentioned, so that we can understand what data
> structure you are trying to get.
>
> --Dave
>
> On Tue, Feb 19, 2013 at 7:26 AM, cheryl Ma <xiaoyancloud@gmail.com> wrote:
>
>> Dave,
>>
>> in this case, "36" is a decimal number. It need be converted to a 32-bit
>> binary number and then one can know which day having the observation, e.g.
>> If there is observation on the 1st day of the month, then bit 1 would be
>> set to true and if there is observation on the 2nd day of the month, then
>> bit 2 would be set to true and so on.
>>
>> We can write a fortran code to convert a decimal number to a 32-bit
>> binary number. My question is if there is a function in ncl to do this?
>>
>> Thanks,
>> Xiaoyan
>>
>>
>>
>>
>> On Mon, Feb 18, 2013 at 4:01 PM, Dave Allured - NOAA Affiliate <
>> dave.allured@noaa.gov> wrote:
>>
>>> Xiaoyan,
>>>
>>> Be careful. In the example you show, "36" is NOT a decimal number. It
>>> looks like it is really a list of two separate integers, 3 and 6.
>>>
>>> It is good that the example image showed the graphic mapping between
>>> calendar days and bit positions, because the statement "Days of Month
>>> Observed = 36" is badly constructed and very misleading. Maybe they should
>>> have said "Days of Month Observed = 3 and 6".
>>>
>>> So, what do you really want to do? Maybe convert a LIST of calendar day
>>> numbers 1 to 31, to a 32-bit unsigned integer, using bit position encoding
>>> as shown in this example?
>>>
>>> Please reply only to the user list!
>>>
>>> --Dave
>>>
>>> On Mon, Feb 18, 2013 at 8:57 AM, cheryl Ma <xiaoyancloud@gmail.com>wrote:
>>>
>>>> Dear all,
>>>>
>>>> Is there any function in NCL to convert a decimal number to a 32-bit
>>>> unsigned binary? In an example shown below, 36 is a decimal, so its binary
>>>> is 00100100000000000000000000000000.
>>>>
>>>> Thanks,
>>>> Xiaoyan
>>>>
>>>> ==============================================
>>>> [image: Figure 3: days of month flag interpretation.]
>>>>
>>>> _______________________________________________
>>>> ncl-talk mailing list
>>>> List instructions, subscriber options, unsubscribe:
>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> ncl-talk mailing list
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>
>>
>

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Tue Feb 19 10:27:29 2013

This archive was generated by hypermail 2.1.8 : Thu Feb 21 2013 - 11:26:43 MST