我需要使用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。 –