在打代码时处理长数字时,很难减少代码的长度,那么您有一些技巧来使数字更短并且更易于管理吗?
例如,下面的Pyth代码显示“ Hello world”,但以44字节为单位,这并不令人满意:
Vcjkj85942000775441864767076 2 7=k+kCiN2)k
那么如何缩短长号85942000775441864767076
呢?
在打代码时处理长数字时,很难减少代码的长度,那么您有一些技巧来使数字更短并且更易于管理吗?
例如,下面的Pyth代码显示“ Hello world”,但以44字节为单位,这并不令人满意:
Vcjkj85942000775441864767076 2 7=k+kCiN2)k
那么如何缩短长号85942000775441864767076
呢?
Answers:
这个问题的最佳时机。@isaacg今天刚刚添加了一个新功能,可以极大地缩短此类数字。
基本技术是将数字转换为以256为基数并将其转换为char。您可以使用代码执行此操作++NsCMjQ256N
。然后,您可以将结果字符串与结合使用C
,这恰好相反(将char转换为int并将结果解释为以256为基数的数字)。因此,您得到13个字符:C"2ìÙ½}ü¶d"
。有些字符无法打印。
但是请注意,我说的是13个字符,而不是字节。如果我复制字符并用https://mothereff.in/byte-counter计数,它说的是13个字符和18个字节。这是由于chars的字符编码,默认情况下为UTF-8。而UTF-8仅允许使用2 ^ 7个不同的1字节字符。每一个字符c
与ord(c) > 127
实际获取存储使用两个字节而不是一个。
@isaacg的新功能就在这里发挥作用。他将默认代码格式从UTF-8更改为iso-8859-1。iso-8859只能代表1个字节,代表256个字符。因此,您现在实际上可以达到13个字节。尽管这仅适用于标准编译器,但在联机编译器中不起作用。
首先,您要使用以下脚本将数字转换为十六进制值:jdm.[2.Hd"0"jQ256
。这给你 12 32 ec d9 bd 07 7d fc b6 64
。然后,使用十六进制编辑器(例如,针对Linux的hexedit)将这些数字复制到您的代码文件中。
注意:
"
,如果字符串是代码的最后一部分,则在末尾删除。34
(字节22
)时,此方法才有效,因为这是"
字符,并且将以字符串结尾。转义有效(5C 22
)。0A
或0d 0a
结尾,可以将其删除。这仅指示行尾。00
。此外,取决于字节之后的\
字节5c
,可能不需要也可以不使用另一个``''转义。