On Fri, Feb 8, 2019 at 7:36 AM Todd Chester via perl6-users <
perl6-users@perl.org> wrote:

> I am dealing with a Buf what includes 32 bit integers, but
> they are entered somewhat backwards as view with hexedit:
>
> AE 5D 5C 72 represents the number 725C5DAE
>
> This is what I have come up with to convert this type of
> number in a buffer to and integer
>
> $ p6 'my Buf $x=Buf.new(0xAE,0x5D,0x5C,0x72); my int32 $i=$x[3] +< 0x18
> +  $x[2] +< 0x10  +  $x[1] +< 0x08  +  $x[0];  say $x; say $i.base(0x10);'
>
> Buf:0x<ae 5d 5c 72>
> 725C5DAE
>
>
> Is there a more "elegant" way to do this?
>

  The "elegant" way I'd do it, is using unpack():
https://docs.perl6.org/routine/unpack

  It's experimental, so a declaration is needed, but Buf does Blob, so
otherwise, it's straight to the point:

$ perl6 -e 'use experimental :pack; my Buf $x=Buf.new(0xAE,0x5D,0x5C,0x72);
say $x.unpack("L").base(0x10);'
725C5DAE
$


Eirik

Reply via email to