Với các int ít endian (và giả sử văn bản ASCII và byte 8 bit, và tất cả các giả định khác mà mã yêu cầu) và bỏ qua tất cả các nội dung C sai về mặt kỹ thuật trong mã, "Điều tôi hiểu cho đến nay ”là chính xác.
gets(&n)sẽ lưu trữ các giá trị ASCII của A, khoảng trắng và B vào 3 byte đầu tiên của n. Nó cũng sẽ lưu trữ một dấu chấm hết null vào byte thứ 4. Lưu trữ những giá trị ASCII vào những byte nkết quả trong nlấy giá trị B*256*256 + space*256 + A, nơi B, spacevà Ađại diện cho các giá trị ASCII tương ứng.
256 mod 85 là 1, do đó theo các thuộc tính của số học mô-đun,
(B*256*256 + space*256 + A) % 85 = (B + space + A) % 85
Ngẫu nhiên, với ints big-endian 4 byte, chúng tôi nhận được
(A*256*256*256 + space*256*256 + B*256) % 85 = (B + space + A) % 85
vì vậy sự bền vững không quan trọng, miễn là chúng ta có ints 4 byte. (Các số nguyên lớn hơn hoặc nhỏ hơn có thể là một vấn đề; ví dụ: với các số nguyên 8 byte, chúng tôi sẽ phải lo lắng về những gì trong số byte nđó getskhông được đặt.)
Khoảng trắng là ASCII 32 và giá trị ASCII cho một ký tự chữ số là 48 + giá trị của chữ số. Xác định avà bnhư các giá trị số của các chữ số vào (chứ không phải là giá trị ASCII của ký tự chữ số), chúng tôi có
(B + space + A) % 85 = (b + 48 + 32 + a + 48) % 85
= (a + b + 128) % 85
= (a + b + 43) % 85
(B + space + A) % 85 - 43 = (a + b + 43) % 85 - 43
= (a + b) % 85
= a + b
trong đó hai giá trị tương đương cuối cùng dựa vào thực tế avà bnhận các giá trị từ 0 đến 9.