cmp 命令不对字节使用 ASCII 编码吗?

Does cmp command not use ASCII encoding for bytes?

我在 https://www.geeksforgeeks.org/cmp-command-in-linux-with-examples/ 上读到了有关 cmp 命令的信息,从那以后有一个片段一直困扰着我。

//...cmp command used with -b option...//

$cmp -b file1.txt file2.txt
file1.txt file2.txt differ: 12 byte, line 2 is 154 l 151 i

/* indicating that the difference is in 12
 byte ,which is 'l' in file1.txt and 'i' in file2.txt.*/

“上面输出中的值154和151分别是这些字节的值。”

为什么 'l' 和 'i' 的字节 154 和 151 的值是?根据 ASCII 系统,我预计它分别是 108 和 105。但这些价值观对我来说似乎很奇怪。它们的出现有什么逻辑吗?

虽然这个问题看起来很微不足道,但我在 Google 搜索中找不到答案。请帮忙。

幸运的是,在 GNU 系统上,一切都是开源的,所以如果有疑问,您可以检查源代码。您很可能正在使用来自 diffutils 的 cmpdiffutils cmp.c 使用:

        printf (_("%s %s differ: byte %s, line %s is %3o %s %3o %s\n"),
            file[0], file[1], byte_num, line_num,
            c0, s0, c1, s1);

打印输出。 %3o 以八进制表示形式打印字节。