小数点“.”的替代字符

Alternative character for decimal point '.'

我需要仅使用 a-z、下划线、破折号和 0-9 对带符号的十进制数进行编码。不允许使用其他特殊字符。

十进制数前面通常有文字和下划线。数字前面的破折号代表负号,因此是负值。

给定:

tree_-0.125flower_21.875

潜在转换:

使用小写 o:

tree_-0.125 -> tree_-0o125

flower_21.875 -> flower_21o875

使用小写 d 作为十进制:

tree_-0.125 -> tree_-0d125

flower_21.875 -> flower_21d875

使用小写字母f,如浮点数:

tree_-0.125 -> tree_-0f125

flower_21.875 -> flower_21f875

使用小写 _:

tree_-0.125 -> tree_-0_125

flower_21.875 -> flower_21_875

人类可读性很重要,因为许多其他人会使用这种语法。鼓励对特定语法提出任何建议或投票。

好的,事情是这样的:

requirement to use only a-z, underscore, dash and 0-9

Human readability is important as many others will use this syntax

绝对和明显的冲突。

不要让自己被迫做这样的事情。用例是什么?你打算强迫谁使用这种语法?

我保证,一旦你将类似的东西引入野外,你就会看到人类<->语法转换工具,所以你也可以使用字节到 az_/09-characters 的任意映射并允许任何 UTF-8 字符。

所以我投票支持这个解决方案:

  1. a-z、_、/、0-9 是 38 个字符,比 32 多一点,这会给你五个位来处理。惊人的。从这些 5 位等效符号中取出 8 个,您将得到一个 5 字节字。
  2. 将你要注释的文字转换为UTF-8,数值只保存32位浮点数。将得到的字节序列存储在内存中,在数据之前添加一个16bit整数长度字段,在数据之后填充为5字节的倍数。
  3. 根据1.的映射,构建一个转换器Bytes->Symbols.
  4. 不要在乎任意的、不人道的监管。请注意,这不是 1960 年代,内存很便宜,人们确实更喜欢阅读实际文本,而不是解析器。