|
|
1
13
好的,拿两个:
这个需要一点解释。首先,让我证明它是可逆的,由此产生的转换应该证明顺序:
输出:
假设有符号字节值:
现在,如果将0x80添加到这些值中,则会得到:
顺序正确(溢出)。 基本上,上面的方法是使用64位有符号长字节而不是8位有符号字节。 转换回来有点迂回。您可能认为可以使用:
但你不能。向该函数(-1)传入16个f,它将引发异常。它似乎将其视为一个无符号的十六进制值
|
|
|
2
2
编辑:好的,所以只给负数加负号是行不通的。。。但是您可以将该值转换为有效的“无符号”long,这样long.MIN\u值映射到“000000000000000”,long.MAX\u值映射到“ffffffffffff”。更难阅读,但会得到正确的结果。
|
|
|
3
0
如果不需要可打印的字符串,可以在将值移位long.MIN\u值(-0x80000000)后将long编码为四个字符,以模拟无符号long:
使用代理项对不是问题,因为字符串的自然顺序是由其字符中的UTF-16值定义的,而不是由UCS-2码点值定义的。 |
|
|
4
0
RFC2550中有一种技术——一个4月1日的RFC笑话,讲的是4位数日期的Y10K问题——可以应用于这个目的。本质上,每当整数的字符串表示增长到需要另一个数字时,就会在前面加上另一个字母或其他(可打印的)字符,以保留所需的排序顺序。消极的规则更神秘,产生的字符串更难一眼就读懂。。。但仍然很容易在代码中应用。 很好,对于正数,它们仍然可读。 请参见: |
|
|
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 1 年前 |
|
|
Alisa Petrova · 在有向图中更改一对顶点以创建循环 1 年前 |
|
|
b39b332d · 使用C++标准库实现高效间隔存储 1 年前 |
|
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 1 年前 |
|
|
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 1 年前 |