Hello Grerard, I'm not sure if I understood your problem but from my quick console session:
>> grouping: log-2 8 == 3.0 >> type? grouping == decimal! >> a: "123456789" copy/part a grouping ** Script Error: Invalid /part count: 3.0 ** Near: copy/part a grouping >> a: "123456789" copy/part a to-integer grouping == "123" >> So basically copy doesn't like decimal numbers as a range argument(which is logical to me in this case) regards, Cyphre ----- Original Message ----- From: "Gerard Cote" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Wednesday, June 01, 2005 9:27 PM Subject: [REBOL] > > Hello list, > > I need some help here since I can't work the copy/part correctly with words instead of numbers. > > The problem I'm working on: > ----------------------------- > While working on a mimicked rebol version of the awk or C "printf" instruction somewhere I have to convert binary numbers in octal, > decimal and hexadecimal. During this process I have to assemble binary digits into chunks of 3 or 4. This is what the following code > does - here for chunks of 3 since the code part for the hexa is done separately for now. The code also pads to the left with0 when > Value length is not a multiple of 3. > > Example: Value: "12345678" -> first padded to "012345678" and sliced to 678 345 012 > Eventually the numbers will be 0 and 1 but for testing it is easier to use decimal numbers to keep positions aligned. > > So the code below works well for a binary to octal assembly - at least for some samples. > The difficulty I have is the following : > > the copy/part doesn't accept the fact that if replace the last parameter (number 3) by its equivalent valued word "grouping" which > is defined as number 3 (defined as grouping: 3). > > I've tried to compose the complete line and do it after but this never worked for the entire script. However this worked well on > smaller oneliner examples. I don't know why and can't explain this kind of anomaly (from my beginnners eyes at least). > > Can someone help ? Thanks in advance > > > value: "12345678" > > val-length: length? value > grouping: log-2 dest-base ; Since source-base is 2 (defined elsewhere) > reste: val-length // grouping ; Length of padding based on this value > if reste <> 0 [ > insert/dup value "0" (grouping - reste) ; Left padding done here > head value > > ] > c: length? value > while [c >= grouping] [ > slice: copy "" > > slice: copy/part at value (c - grouping + 1) 3 ; <- This 3 is to be replaced with the word > print ["slice: " slice] ; "grouping" > ; remove/part at value c - 3 3 > c: c - grouping > ] > > > -- > To unsubscribe from the list, just send an email to > lists at rebol.com with unsubscribe as the subject. > -- To unsubscribe from the list, just send an email to lists at rebol.com with unsubscribe as the subject.
