DWORD按位写 + 取出特定位

2023-11-02 09:38
文章标签 特定 按位 取出 dword

本文主要是介绍DWORD按位写 + 取出特定位,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

开发一个大型工程很多时候不想去更改头文件,但是又需要在开发后期增加

参数,除了利用原先预留的标志位dwReserv[20],比如这里就预留了20位;还可以将原来的参数拆分成几个。 比如一个DWORD一共有4个字节,可以开辟每8位来储存一个参数,之后收到的时候再取出来就行了。

例子:一个DWORD类型的参数,现在想要BIT0-BIT7 填写colorPrimaries参数,BIT8-BIT15填写TransferCharacteristic参数,BIT16-BIT23填写MatrixCoefficients参数。 

这些参数都是Int类型。那么该怎么填充呢?

int eColourPrimaries = 9;int eTransferCharacteristic = 18;int eMatrixCoefficients = 9;DWORD nResult = eColourPrimaries;DWORD nTemp = eTransferCharacteristic;nTemp = nTemp<<8;nResult |= nTemp;nTemp = eMatrixCoefficients;nTemp = nTemp << 16;nResult |= nTemp;

简单来说就是

nResult = eColourPrimaries |  (eTransferCharacteristic << 8 ) | (eMatrixCoefficients << 16 );

那么怎么取对应位的数据呢?

对方收到nResult,按照约定的方式去取对应位的参数,2进制 8位全部为1的值是255.

DWORD filter = 255;int color1 = nResult & filter;nResult = nResult>>8;int trans1 = nResult&filter;nResult = nResult>>8;int matrix1 = nResult&filter;

 

这篇关于DWORD按位写 + 取出特定位的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/329712

相关文章

Android中如何实现adb向应用发送特定指令并接收返回

1 ADB发送命令给应用 1.1 发送自定义广播给系统或应用 adb shell am broadcast 是 Android Debug Bridge (ADB) 中用于向 Android 系统发送广播的命令。通过这个命令,开发者可以发送自定义广播给系统或应用,触发应用中的广播接收器(BroadcastReceiver)。广播机制是 Android 的一种组件通信方式,应用可以监听广播来执行

Vim多文件搜索特定内容

reference: http://blog.chinaunix.NET/uid-14770335-id-3025369.html 用VIM开发或浏览项目时,经常会用到多文件的模式搜索。一些场合,可以用cscope find t可以解决了。可是遇到复杂的模式,该命令就捉襟见肘了。这时候就得用vim自带的匹配利器---vimgrep。 vimgrep有两种使用的方式: 1)将匹配模式

“非”运算与“按位取反”运算

非运算(NOT)和按位取反(bitwise NOT)在概念上非常相似,它们都是将数字的每一位二进制数取反。不过,它们在某些上下文和细节上可能有所不同: 1.非运算(NOT): 通常指的是逻辑运算,用于布尔逻辑中,它将逻辑值取反。在布尔逻辑中,非运算只处理两个值:真(true)和假(false)。 在数字逻辑中,非运算可以应用于任何位宽的数字,但通常用于处理单个比特位。 2.按位取反(bit

没有开发环境,如何取出安卓手机的日志文件

将手机USB连接到电脑,并开启调试模式,允许电脑调试, 日志输出到电脑硬盘 1、先cd到桌面,这样才能让生成的log文件保存到桌面 2、adb logcat -v time > app.log 3、Ctrl+C 停止输出 或者 通过adb kill-server停止 注意:这个命令执行起来后, 只是将 从 开始执行 的时刻起, 将log日志全部打印到 app.log 文

如何在JSON对象中查询特定的值?C语言实现

在C语言中,由于C标准库本身并不直接支持JSON的解析和查询,你需要使用外部库来处理JSON数据。cJSON 是一个流行的、用C语言编写的轻量级JSON解析器,它允许你解析JSON字符串,并以C语言的结构(如cJSON结构体)来表示这些数据,进而查询特定的值。 以下是一个使用cJSON在C语言中查询JSON对象中特定值的示例: 首先,确保你已经包含了cJSON库,并且你的项目能够链接到它。

监控台在特定场所的应用需要注意哪些?

监控台作为监控系统的核心操作平台,其在特定场所的应用显得尤为重要。然而,不同场所因其功能、环境及安全需求的差异,对监控台的应用提出了不同的要求与注意事项。本文将给大家从几个关键方面探讨监控台在特定场所应用时需要注意的事项。   1. 环境适应性   首先,监控台必须具备良好的环境适应性。在极端温度、湿度变化大或存在腐蚀性气体的工业场所,如化工厂、炼油厂等,监控台需采用防腐蚀、防尘、防水的设

sql 中名字 不可以 包含 mysql中 具有 特定意义 的单词

这种sql执行不报错 这种sql执行报错 所以sql中名字不可以使用mysql中具有特定意义的单词 以此文章作为警告,我下次起名字不可以使用 mysql中具有特殊意义的字符 就因为这个导致我搞了一个多小时,急死我了,周五就要前后端联调了。下次千万不能随便起名字了

通过EasyExcel设置自定义表头及设置特定单元格样式、颜色

前言    在项目开发中,我们会遇到各种文件导出的开发场景,但是这种情况并都不常用,于是本人将自己工作中所用的代码封装成工具类,旨在记录工具类使用方法和技术分享。 实战代码 导出效果: 1、导入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>

js 取出json数组中的值

<script>   var arr=[{"adv_pic":"img2.jpg"},{"adv_pic":"img3.jpg"}];     alert(arr.length); </script> 上面是有关联数组的书写方法,下面是索引数组的书写方法。 供大家参照方便使用~_~ [["4c7725f76d681.jpg","4c77264120907.jpg","4c7726a6c

(按位取反)运算的理解

(按位取反)运算的理解: 按照我平时的理解,当我使用~按位取反运算的时候,计算机会将操作数所对应的二进制表达式的每一个位进行取反计算,取反后所得到的值就是~按位取反的运算结果(这点没问题) 例如,假如我的计算机是32位的,我接下来要计算~5的值,计算过程如下: 5 的二进制表达式为:0000 0000 0000 0000 0000 0000 0000 0101 执行~运算,即~5后: 11