Pie*_*rre 15 string numbers postscript
在postscript中,cvs*operator*被称为将数字转换为字符串.我该怎么用?我试过了 :
100 100 moveto
3.14159 cvs show
Run Code Online (Sandbox Code Playgroud)
要么
100 100 moveto
3.14159 cvs string show
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
有帮助吗?
lhf*_*lhf 13
试试3.14159 20 string cvs show.
string需要一个大小并将创建的字符串留在堆栈上. cvs需要一个值和一个字符串来存储转换后的值.
如果您正在进行大量的字符串转换,那么创建一个字符串并在每次转换中重用它可能更有效:
/s 20 string def
3.14159 s cvs show
Run Code Online (Sandbox Code Playgroud)
lus*_*oog 13
一个常见的习惯用法是使用文字字符串作为模板.
1.42857 ( ) cvs show
Run Code Online (Sandbox Code Playgroud)
您甚至可以通过使用更大字符串的各种子字符串呈现cvs来执行格式化输出.
%0123456.......
(2/7 = ) dup 6 7 getinterval
2.85714 exch cvs pop show
Run Code Online (Sandbox Code Playgroud)
但Ghostscript风格指南禁止这样做.它几乎是我们发布的唯一已发布的Postscript风格指南.(在comp.lang.postscript中对此进行了讨论.)因此,一个常见的建议是在需要时分配一个新的字符串,让垃圾收集器获得它的保留.
4.28571 7 string cvs show
Run Code Online (Sandbox Code Playgroud)
作为最后的手段,真正的懒惰黑客劫持=string,通过使用内置的128字节的缓冲区=和==输出数字(使用,当然,我们的朋友cvs).
5.71428 =string cvs show
Run Code Online (Sandbox Code Playgroud)
如果你喜欢那个,你可以将它与=其他技巧结合起来:立即评估名称.
{ 7.14285 //=string cvs show } % embed =string in this procedure
Run Code Online (Sandbox Code Playgroud)
这样可以减少额外的微秒,并使交互式检查代码变得更加困难.调用==此程序不会显示您正在使用的事实=string; 它看起来就像任何其他字符串.
这个包的另一个技巧,来自Helge Blischke在comp.lang.postscript中的帖子.这是获得零填充整数的简单方法.
/bindec % <integer> bindec <string_of_length_6>
{
1000000 add 7 string cvs 1 6 getinterval
}bind def
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6664 次 |
| 最近记录: |