On 2/7/19 10:35 PM, Todd Chester via perl6-users wrote:

Hi All,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? Many thanks, -T

Hi All, Thank you for all the wonderful tips! Now I have to write them all down for my own documentation. This is a fun one I also came up with. Since I was already doing bitwise shift left, I thought I might as well do it all with bitwise operations: first bitwise shift left, then bitwise OR to combine them. (Yes, I played with AND and OR gates 40 years ago. CMOS was my favorite.) $ 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 Interesting that I did not have to put () to force the order of operation. "shift" came before "OR". -T