|
|||
|
I want to write a simple function to convert and integer into a string 6 characters in length, padding with zeros as necessary. The function add the necessary zeros to the front of the string to make the overall length 6. Ideally I could pass the function the integer, and the length I want the string to be.
For example, if I input '1' I want the function to return '000001' or if input '123' I want the function to return '000123'. I've only recently started learning Postscript programming and this is one application I haven't been able to solve. |
|
|
||||
|
||||
|
|
|
|||
|
On Fri, 13 Jul 2012 04:03:45 -0700 (PDT), Daniel Taylor wrote:
> I want to write a simple function to convert and integer into a string 6 characters in length, padding with zeros as necessary. The function add the necessary zeros to the front of the string to make the overall length 6. Ideally I could pass the function the integer, and the length I want the string to be. > > For example, if I input '1' I want the function to return '000001' > > or if input '123' I want the function to return '000123'. > > I've only recently started learning Postscript programming and this is one application I haven't been able to solve. That's less a problem in PostScript than a problem in algorithmic arithmetic. Your desired left-most digit is the integer value, before remainder, of dividing your given number by 100,000. Your next desired digit is the integer value, before remainder, of dividing the *remainder* from the previous division by 10,000. Your next ... " ... " ... by 1,000. % by ... " ... " ... I mean 'ditto' . And likewise, for 100, 10, and 1, respectively. That's the algorithmic arithmetic. How to accomplish those 6 steps in PostScript -- and perhaps how to implement them in a loop -- I leave as a worthwhile PostScript exercise for you :-) . Cheers, -- tlvp -- Avant de repondre, jeter la poubelle, SVP. |
|
|||
|
Daniel Taylor wrote:
> I want to write a simple function to convert and integer into a string 6 > characters in length, padding with zeros as necessary. The function add > the necessary zeros to the front of the string to make the overall length > 6. Ideally I could pass the function the integer, and the length I want > the string to be. > > For example, if I input '1' I want the function to return '000001' > > or if input '123' I want the function to return '000123'. > > I've only recently started learning Postscript programming and this is one > application I haven't been able to solve. A fairly simple solution (without algorithmic arithmetic) is by the following procedure: /bindec % <integer> bindec <string_of_length_6> { 1000000 add 7 string cvs 1 6 getinterval }bind def Helge |
|
|||
|
On Saturday, 14 July 2012 07:19:24 UTC+12, Helge Blischke wrote:
> Daniel Taylor wrote: > > > I want to write a simple function to convert and integer into a string 6 > > characters in length, padding with zeros as necessary. The function add > > the necessary zeros to the front of the string to make the overall length > > 6. Ideally I could pass the function the integer, and the length I want > > the string to be. > > > > For example, if I input '1' I want the function to return '000001' > > > > or if input '123' I want the function to return '000123'. > > > > I've only recently started learning Postscript programming and this is one > > application I haven't been able to solve. > > A fairly simple solution (without algorithmic arithmetic) is by the > following procedure: > > /bindec % <integer> bindec <string_of_length_6> > { > 1000000 add 7 string cvs 1 6 getinterval > }bind def > > > Helge That's a fantastic help thank you. Very simple and very easy for me to get my head around. Regards Daniel |
|
|||
|
On Fri, 13 Jul 2012 21:19:24 +0200, Helge Blischke wrote:
> Daniel Taylor wrote: > >> I want to write a simple function to convert and integer into a string 6 >> characters in length, padding with zeros as necessary. The function add >> the necessary zeros to the front of the string to make the overall length >> 6. Ideally I could pass the function the integer, and the length I want >> the string to be. >> >> For example, if I input '1' I want the function to return '000001' >> >> or if input '123' I want the function to return '000123'. >> >> I've only recently started learning Postscript programming and this is one >> application I haven't been able to solve. > > A fairly simple solution (without algorithmic arithmetic) is by the > following procedure: > > /bindec % <integer> bindec <string_of_length_6> > { > 1000000 add 7 string cvs 1 6 getinterval > }bind def > > > Helge Elegant, Helge :-) . Alas, each of us is congenitally predisposed to see each problem as the sort of nail our own unique hammers can deal with, and thereupon we deal with it accordingly. In this instance, your hammer is by far the more appropriate, as is your perspective on the problem :-) . Cheers, -- tlvp -- Avant de repondre, jeter la poubelle, SVP. |
|
|
![]() |
| Thread Tools | |
| Display Modes | |
|
|