我需要使用read
系統調用來讀取unsigned short
。 根據the manpage:C如何使用read系統調用讀取字節?
讀()嘗試從文件描述符
fd
讀取多達count
字節到開始buf
緩衝區。
在我的情況下,unsigned short
是兩個字節大小,所以它可以存儲數高達65535。但是,當我執行此代碼:在命令行
char buf[2];
bytes_read = read(0, buf, 2);
bytes_wrote = write(1, buf, 2);
和類型,比方說,號碼123
,它只返回12
。它不讀取字節,而是符號?我怎樣才能將一個超過2個符號的值讀入一個2字節的緩衝區?例如,unsigned short
的最大值。我在K & R或關於它的手冊中沒有發現任何內容,所以我認爲它非常簡單。
是的,它讀取字節。它不會_parse_他們,只是讀它們。你會得到前兩個字節。 –
@QPaysTaxes是的,我發現它,終端有許多不同的符號。這似乎是ASCII解釋! – Tehada
什麼編碼沒關係。你輸入'1',然後輸入'2',然後輸入'3';您的代碼將會讀取您寫入的前兩個字節。它不會解釋(爲了方便使用ASCII)0x31,然後是0x32作爲數字12;它會將其解釋爲0x31,然後是0x32。 –