Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Simple string padding function in Postscript

124 views
Skip to first unread message

Daniel Taylor

unread,
Jul 13, 2012, 7:03:45 AM7/13/12
to
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.

tlvp

unread,
Jul 13, 2012, 2:42:49 PM7/13/12
to
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.

Helge Blischke

unread,
Jul 13, 2012, 3:19:24 PM7/13/12
to
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

Daniel Taylor

unread,
Jul 13, 2012, 5:37:24 PM7/13/12
to
On Saturday, 14 July 2012 07:19:24 UTC+12, Helge Blischke wrote:
> Daniel Taylor wrote:
>
> &gt; I want to write a simple function to convert and integer into a string 6
> &gt; characters in length, padding with zeros as necessary. The function add
> &gt; the necessary zeros to the front of the string to make the overall length
> &gt; 6. Ideally I could pass the function the integer, and the length I want
> &gt; the string to be.
> &gt;
> &gt; For example, if I input &#39;1&#39; I want the function to return &#39;000001&#39;
> &gt;
> &gt; or if input &#39;123&#39; I want the function to return &#39;000123&#39;.
> &gt;
> &gt; I&#39;ve only recently started learning Postscript programming and this is one
> &gt; application I haven&#39;t been able to solve.
>
> A fairly simple solution (without algorithmic arithmetic) is by the
> following procedure:
>
> /bindec % &lt;integer&gt; bindec &lt;string_of_length_6&gt;
> {
> 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

tlvp

unread,
Jul 13, 2012, 11:20:32 PM7/13/12
to
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 :-) .
0 new messages