사용 중이지만 cmp (GNU diffutils) 3.7
("출력 바이트 수 및 고유 바이트 값")의 출력이 혼란스럽습니다.cmp -l/--verbose
처음에 몇 바이트를 제외하고는 거의 동일한 두 개의 파일이 있습니다.
$ ls -n x*
-rw-rw-r-- 1 1000 1000 345776 Jun 16 10:41 x-6.xz
-rw-rw-r-- 1 1000 1000 345776 Jun 16 10:04 x-9.xz
$ hexdump -C x-6.xz | head -3
00000000 fd 37 7a 58 5a 00 00 04 e6 d6 b4 46 02 00 21 01 |.7zXZ......F..!.|
00000010 16 00 00 00 74 2f e5 a3 e2 1c bb ef ff 5d 00 39 |....t/.......].9|
00000020 18 4a a7 22 04 94 b3 4a c8 bc d2 00 4b 8c be aa |.J."...J....K...|
$ hexdump -C x-9.xz | head -3
00000000 fd 37 7a 58 5a 00 00 04 e6 d6 b4 46 02 00 21 01 |.7zXZ......F..!.|
00000010 1c 00 00 00 10 cf 58 cc e2 1c bb ef ff 5d 00 39 |......X......].9|
00000020 18 4a a7 22 04 94 b3 4a c8 bc d2 00 4b 8c be aa |.J."...J....K...|
$ diff <(hexdump -C x-6.xz) <(hexdump -C x-9.xz)
2c2
< 00000010 16 00 00 00 74 2f e5 a3 e2 1c bb ef ff 5d 00 39 |....t/.......].9|
---
> 00000010 1c 00 00 00 10 cf 58 cc e2 1c bb ef ff 5d 00 39 |......X......].9|
$
나를 혼란스럽게 만드는 것은 내가 할 때입니다 cmp -l
.
$ cmp -l x-6.xz x-9.xz
17 26 34
21 164 20
22 57 317
23 345 130
24 243 314
$
바이트 17은 x-6.xz에서 26, x-9.xz에서 34의 값을 갖는다고 말하는 것 같습니다. 이것은 잘못된 것입니다. 실제로 바이트 16(즉, 0x10)에는 0x16 및 0x1c(각각 22 및 28) 값이 있습니다. 또한 cmp는 바이트 23의 값이 345임을 나타냅니다. 어떻게 바이트가 255보다 클 수 있습니까? 출력이 무엇을 의미하는지 오해하고 있는 것 같지만 출력 man cmp
이 무엇인지는 나타내지 않는 것 같습니다.
답변1
cmp
1부터 시작하여 오프셋을 계산하고 바이트 값을 8진수로 표시합니다.:
17 26 34
hexdump
오프셋 17( 0에서 시작하므로 출력에서는 0x10)에 있는 바이트의 값이 026 8진수임을 의미합니다 .즉첫 번째 파일의 10진수 22인 8진수 034,즉두 번째 파일의 10진수 28입니다.