develooper Front page | perl.perl6.users | Postings from June 2022

Re: Easier way to load a buffer?

Thread Previous | Thread Next
From:
Andy Bach
Date:
June 13, 2022 14:20
Subject:
Re: Easier way to load a buffer?
Message ID:
SA1PR09MB82403BC66F76096088298BC5C0AB9@SA1PR09MB8240.namprd09.prod.outlook.com
> You could think: what does "comb(2)" do?  Perhaps look at the documentation?  And then maybe realize that Simon forgot that the comb(2) should be a method on $hex?  Otherwise, how would it know what to parse?

Ah, I did wonder why $hex wasn't in the 2nd line in any way.
> my $hex = "2A54FF53A5F1D36F1CEA7E61FC37A20D54A77FE7B78";
2A54FF53A5F1D36F1CEA7E61FC37A20D54A77FE7B78
> my Buf $b=Buf.new($hex.comb(2).map( *.parse-base(16) ));
Buf:0x<2A 54 FF 53 A5 F1 D3 6F 1C EA 7E 61 FC 37 A2 0D 54 A7 7F E7 B7 08>

So, take $hex 2 at a time and run that through the parse-base(16), assigning it to $buf
________________________________
From: Elizabeth Mattijsen <liz@dijkmat.nl>
Sent: Friday, June 10, 2022 5:28 PM
To: ToddAndMargo via perl6-users <perl6-users@perl.org>
Subject: Re: Easier way to load a buffer?

CAUTION - EXTERNAL:


> On 10 Jun 2022, at 23:28, ToddAndMargo via perl6-users <perl6-users@perl.org> wrote:
>
>>> On Fri, 10 Jun 2022 at 15:49, ToddAndMargo via perl6-users <perl6-users@perl.org <mailto:perl6-users@perl.org>> wrote:
>>>    Hi All,
>>>    I am looking for an easier way to load a buffer.
>>>    I know about this way
>>>    [4] > my Buf $b=Buf.new(0x2A, 0x54, 0xFF, 0x53);
>>>    Buf:0x<2A 54 FF 53>
>>>    I would like to do it on one big blast:
>>>    my Buf $b=Buf.new(0x2A54FF53A5F1D36F1CEA7E61FC37A20D54A77FE7B78);
>>>    Cannot unbox 170 bit wide bigint into native integer
>>>    But do not know the proper syntax.
>>>    Any words of wisdom?  Am I stuck with the hard way?
>>>    Many thanks,
>>>    -T
>
> On 6/10/22 08:36, Simon Proctor wrote:
>> So Buf is expecting a list of integers. If' you've got one long one in a string like "2A54FF53A5F1D36F1CEA7E61FC37A20D54A77FE7B78" you want to split it into smaller values so something like this?
>> my $hex = "2A54FF53A5F1D36F1CEA7E61FC37A20D54A77FE7B78";
>> my Buf $b=Buf.new(comb(2).map( *.parse-base(16) ));
>> Which does the trick I think.
>
>
> [0] > my $hex = "2A54FF53A5F1D36F1CEA7E61FC37A20D54A77FE7B78";
> 2A54FF53A5F1D36F1CEA7E61FC37A20D54A77FE7B78
> [1] > my Buf $b=Buf.new(comb(2).map( *.parse-base(16) ));
> ===SORRY!=== Error while compiling:
> Calling comb(Int) will never work with signature of the proto ($, $, $?, *%)
> ------> my Buf $b=Buf.new(⏏comb(2).map( *.parse-base(16) ));
> [1] >

You could think: what does "comb(2)" do?  Perhaps look at the documentation?  And then maybe realize that Simon forgot that the comb(2) should be a method on $hex?  Otherwise, how would it know what to parse?

I know it is hard to think when you're in a hurry.  But you should really learn to be able to read code, instead of copying examples only and not understanding *how* they work.
CAUTION - EXTERNAL EMAIL: This email originated outside the Judiciary. Exercise caution when opening attachments or clicking on links.


Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About