将两个字节放在一起
putting two bytes together
我正在从文件中读取一个字节。在本例中,我读取了两个字节(以十六进制表示(
94
和73
.我怎样才能把这两个字节放在一起,让它们看起来像
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。
相关文章:
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 将图形属性与 std::unique_ptr 捆绑在一起
- 你能在 c++ 中将不同的数字类型加在一起吗?
- 如何将两个字符串加在一起,就好像它们是变量一样?
- 当返回语句时,逗号运算符、大括号初始化列表和 std::unique_ptr 组合在一起
- 为什么push_back和emplace_back结合在一起时,会有不同的行为
- 在浮点精度成为一个问题之前,可以将多少个浮点值加在一起
- 为什么在template函数广播中把两个extensor表达式加在一起不正确
- 实现具有浮点键的类似哈希表的数据结构,其中公差内的值被合并在一起
- 如何在Qt TableView中将列的宽度调整为数据并将最后一部分拉伸在一起
- 编译器如何将链表中的地址字符串在一起?
- 在 c++ 中,两个日志行与 log4Cxx 混合在一起
- 如何将两个 jlong 数据类型转换为 jstring,然后将两个字符串连接在一起以便从 JNI 将字符串返回给 jav
- 将许多向量排序在一起
- C++ std:: 并包括它们如何组合在一起?
- 通过字符串迭代并将每个循环中的先前字符组合在一起
- CMake 项目结构:如何正确地将库合并在一起并将它们包含在多个可执行文件中
- 当字节在文件上写入0时,是否可以保持写作时间稳定
- C 操作员超载将3个向量加在一起
- 有没有一种干净(更)的方法将 CRTP 与可变参数继承混合在一起?