无法准确找到如何做C / C ++以下的方式。

输入:hexdecimal值,例如:ffffffffff ...

我试图以读出的输入以下代码:

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

这就是工作正常,所有的,但我怎么劈1bytes uint8_t值(或者甚至是只读的第一个字节)的2个字节。想读从输入的第一个字节,并将其存储在一个字节矩阵在选择的位置。

uint8_t matrix[50][50]

由于我不是很熟练在格式化/非常感谢从在C / C ++输入读数(和只使用的scanf迄今为止)上如何做到这一点很容易地任何其他的想法(和快,如果它进入)。

编辑:通过使用fread函数,因为它允许一个指定它应该多少字节从所述流(在此情况下标准输入)读出并保存到变量/阵列实测值甚至更好的方法

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

参数

PTR - 指向的内存的(大小*计数)字节的最小大小的块

大小 - 尺寸中的每个元素的字节将被读取

计数 - 元素的数量,每一个的大小的大小的字节数

流 - 指向FILE对象,指定的输入流。

CPLUSPLUS REF

有帮助吗?

解决方案

%x读取unsigned int,而不是一个uint16_t(认为它们可以是你的特定平台上相同)。

要读只有一个字节,尝试:

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

此读取unsigned int,但读取两个字符(2个十六进制字符等于8位,或一个字节)。

后停止

其他提示

您应该能够可变分割是这样的:

uint8_t LowerByte=twoBytes & 256;
uint8_t HigherByte=twoBytes >> 8;

一对夫妇的想法:

1)读它作为字符,并将其转换手动 - 痛苦

2)如果你知道,有4个hexits的倍数,可以只读取twobytes然后转换为一个字节的值具有高= twobytes << 8;低= twobyets&FF;

3)2×%

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top