这个规则肯定是无效的。如果是,那么你可以交换字符,你仍然会得到相同的结果393
。但是在比较单词时,字符顺序很重要。
要获得适合比较的值,您必须像这样计算:
K + i + n + g = ((75 × 256 + 105) × 256 + 110) × 256 + 103
但是您会超出长字的有效数值范围。对于 7 位 ASCII 代码(严格在 0 ... 127 范围内),您还可以乘以 128 而不是 256。
--
实际上,这些值是一一比较的,即(在伪代码中):
valueOf(last_name[0]) < 75 OR
valueOf(last_name[1]) < 105 OR
valueOf(last_name[2]) < 110 OR
valueOf(last_name[3]) < 103
...如果比较在遇到的第一个不等式处停止,或者如果到达一个单词的结尾,则比较单词的长度。
也就是说,2个单词的字符逐个字符进行比较,直到遇到两个不同的字符。然后比较这两个字符产生最终结果。
举'Kelvin' < 'King'
个例子:
'K' < 'K' ==> false
'e' < 'i' ==> true
final result = true
其他示例'King' < 'Kelvin'
(单词交换):
'K' < 'K' ==> false
'i' < 'e' ==> false, the characters are not equal, therefore stop
final result = false
其他例子'be' < 'begin'
:
'b' < 'b' ==> false
'e' < 'e' ==> false
end of first word reached, length('be') < length('begin') ==> true
final result = true
正如您已经提到的,两个字符的实际比较是通过比较它们的数值来执行的。