разница между отправкой int или char в / dev / audio (в Linux) - PullRequest
1 голос
/ 04 января 2012

У меня есть маленькая программа на C (play.c):

#include <stdio.h>

main() {
  int t;
  for (t=0; t<8000; t++) {
    printf ("%c", t%256);
  }
}

когда я перенаправляю вывод (в Linux):

./play > /dev/audio

звучит так, как я ожидаю. Но если я отформатирую вывод в printf как int (%d) вместо char, я получу другой звук (и неправильный, насколько мне говорят уши).

Почему это происходит? Разве одинаковые номера не отправляются на аудиоустройство?

1 Ответ

2 голосов
/ 04 января 2012

Нет, как сказал бы man printf, или простой diff на выходе, перенаправленный в два файла. «% c» печатает часть знака без знака (первые 8 битов) как один символ, а «% d» - целое число в представлении из 10 цифр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...