875770417
буквально совпадает с 1234
, если вы интерпретируете это число как байты с прямым порядком байтов. Вот небольшой быстрый код Python, который показывает это:
>>> (875770417).to_bytes(4, 'little')
b'1234'
read
системный вызов будет читать необработанные введенные вами байты:
ssize_t read(int fd, void *buf, size_t count);
read()
пытается прочитать до count
байтов из файлового дескриптора fd
в буфер, начиная с buf
.
Вы ввели следующие байты:
49, 50, 51, 52
... которые являются ASCII-кодами строки 1234
.
Вам нужно преобразовать эту строку в целое число, но прежде всего прочитайте эту строку в некоторый буфер:
char buffer[64] = {0};
read(0, buffer, 4);
А затем используйте atoi
, чтобы проанализировать строку в buffer
и преобразовать ее в целое число:
$ cat test.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main() {
char buffer[64] = {0};
uint32_t input;
read(0, buffer, 4);
input = atoi(buffer);
printf("You entered: '%d'\n", input);
}
$ clang test.c && ./a.out
1234
You entered: '1234'
$