gpt4 book ai didi

c++ - C/C++ 从标准输入的 hexinput 读取一个字节

转载 作者:行者123 更新时间:2023-11-30 04:41:01 24 4
gpt4 key购买 nike

无法准确找到如何在 C/C++ 中执行以下操作的方法。

输入:十六进制值,例如:ffffffffff...

我尝试了以下代码来读取输入:

uint16_t twoBytes;
scanf("%x",&twoBytes);

一切正常,但我如何将 2 个字节拆分为 1 个字节的 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 对象的指针。

cplusplus ref

最佳答案

%x 读取 unsigned int,而不是 uint16_t(认为它们在您的特定平台上可能相同)。

要只读取一个字节,试试这个:

uint32_t byteTmp;
scanf("%2x", &byteTmp);
uint8_t byte = byteTmp;

这会读取一个 unsigned int,但在读取两个字符后停止(两个十六进制字符等于八位或一个字节)。

关于c++ - C/C++ 从标准输入的 hexinput 读取一个字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/512941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com