缩短长号


10

在打代码时处理长数字时,很难减少代码的长度,那么您有一些技巧来使数字更短并且更易于管理吗?

例如,下面的Pyth代码显示“ Hello world”,但以44字节为单位,这并不令人满意:

Vcjkj85942000775441864767076 2 7=k+kCiN2)k

那么如何缩短长号85942000775441864767076呢?

Answers:


10

这个问题的最佳时机。@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字节字符。每一个字符cord(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)将这些数字复制到您的代码文件中。

hexedit示范

注意:

  • 显然",如果字符串是代码的最后一部分,则在末尾删除。
  • 仅当您的base-256表示形式中没有34(字节22)时,此方法才有效,因为这是"字符,并且将以字符串结尾。转义有效(5C 22)。
  • 顺便说一句,当您使用十六进制编辑器打开文件时,您可能会看到该字节0A0d 0a结尾,可以将其删除。这仅指示行尾。

我必须将脱机解释器放在我的计算机上,但这真是太好了,谢谢!:)
Beta Decay

1
字符串也不能包含value的空字节00。此外,取决于字节之后的\字节5c,可能不需要也可以不使用另一个``''转义。
isaacg 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.