【发布时间】:2009-02-07 04:59:30
【问题描述】:
无法完全找到如何在 C/C++ 中执行以下操作的方法。
输入:十六进制值,例如:ffffffffff...
我已尝试使用以下代码来读取输入:
uint16_t twoBytes;
scanf("%x",&twoBytes);
这一切都很好,但是我如何将 2bytes 拆分为 1bytes uint8_t 值(或者甚至可能只读取第一个字节)。想从输入中读取第一个字节,并将其存储在字节矩阵中的选择位置。
uint8_t matrix[50][50]
由于我在格式化/读取 C/C++ 中的输入方面不是很熟练(并且到目前为止只使用了 scanf),因此非常感谢任何其他关于如何轻松完成此操作的想法(如果可以的话,速度很快)。
编辑:通过使用 fread 函数找到了一种更好的方法,因为它可以指定应该从流(在本例中为标准输入)读取多少字节并保存到变量/数组中。
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
参数
ptr - 指向最小大小为 (size*count) 个字节的内存块的指针。
size - 要读取的每个元素的大小(以字节为单位)。
count - 元素的数量,每个元素的大小为 size 字节。
stream - 指向指定输入流的 FILE 对象的指针。
【问题讨论】: