将两个字节放在一起

putting two bytes together

本文关键字:字节 在一起 两个      更新时间:2023-10-16

我正在从文件中读取一个字节。在本例中,我读取了两个字节(以十六进制表示(

9473.我怎样才能把这两个字节放在一起,让它们看起来像

9470

我可以使用73 >> 4来制作70 73但是我怎样才能将它们"放"在一起呢?

我尝试使用(94 << 8) & ( 73 >> 4 )但它总是返回 0。

我没有发现任何关于处理这样的字节的信息。(在本例中基本上读取一个半字节(,一次读取 2 个字节

代码示例

uint64_t bytes;
output.read( (char *)&bytes, 2 );  // read 2 bytes
uint64_t tmp       = ( cutIt  << ( 64 - 8) ) >> ( 64 - 8) ; 
uint64_t tmp_two   = (( cutIt >> 8) & 11110000 ) >> 4;
uint64_t tmp_three = (tmp << 8) & tmp_two ;
((94 << 8)+74) & (FFF0)

会给你你想要的输出。 为此,您需要考虑二进制。

((10010100 <<8) + 01110100) & (1111111111110000)

由于逻辑 AND 和,最后的 4 个零将使您的 LSB 归零并保持您的单词 legth。

要回答注释:您只需通过更改零的点数来选择要使用的位数。对于您的示例,这意味着您用于逻辑 AND 的数字将是十六进制或二进制的 FFFC1111111111111100。

byte b1 = 0xAB;
byte b2 = 0xCD;
...
short s = (short)(b1<<8) | ((short)(b2<<4) & 0xF0);
//s = ABC0

使用 or(|( 代替 and (&( 将移位的值合并在一起,否则始终为 0。