c#设置或者获取一个泛型整数指定bit的值

1.设置

代码如下(示例):

		/// <summary>/// 设置一个整形数的每一个bit的值/// </summary>/// <typeparam name="T"></typeparam>/// <param name="flag">bit位0或者1</param>/// <param name="num">需要改变的数</param>/// <param name="offset">从右往左第几位,从0开始</param>/// <returns></returns>T Changebit<T>(bool flag, T num, int offset) where T : struct{// 确保 T 是一种整数类型int len = 0;if (_data is uint ){len = sizeof(uint) * 8;}else if (_data is int){len = sizeof(int) * 8;}else if (_data is long){len = sizeof(long) * 8;}else if (_data is ulong){len = sizeof(ulong) * 8;}else if (_data is short){len = sizeof(short) * 8;}else if (_data is ushort){len = sizeof(ushort) * 8;}else if (_data is byte){len = sizeof(byte) * 8;}else{throw new InvalidOperationException("Only integer types are supported.");}if (index > len || index < 0)throw new InvalidOperationException("Length too long.");// 将 T 转换为整数,以便进行位操作dynamic value = num;// 创建一个掩码,指定偏移量位置int mask = 1 << offset;if (flag){// 如果 flag 为真,设置相应位置的位value |= mask;}else{// 如果 flag 为假,清除相应位置的位value &= ~mask;}// 返回处理后的结果return (T)value;}

2.get每一个bit位

代码如下(示例):

bool GetIntBit<T>(T _data, int index){int len = 0;if (_data is uint){len = sizeof(uint) * 8;}else if (_data is int){len = sizeof(int) * 8;}else if (_data is long){len = sizeof(long) * 8;}else if (_data is ulong){len = sizeof(ulong) * 8;}else if (_data is short){len = sizeof(short) * 8;}else if (_data is ushort){len = sizeof(ushort) * 8;}else if (_data is byte){len = sizeof(byte) * 8;}else{throw new InvalidOperationException("Only integer types are supported.");}if (index > len || index < 0){throw new ArgumentOutOfRangeException();}dynamic b = _data;return (b & (1 << index)) != 0;}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/834231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做安卓应用开发的我,转前端开发了

距离转前端开发已经快3个月了&#xff0c;现在自己也慢慢的熟悉了开发。 在2月份的时候。领导找我们移动小组的谈话&#xff0c;主要是关于转前端或者后端的问题。由于公司移动端的选型&#xff0c;对安卓原生的需求降低&#xff0c;问下我们转其他开发的需求。 我毫不犹豫的选…

【C++】滑动窗口:最大连续1的个数

1.题目 2.算法思路 其实在做这道题的时候并不需要真的把0翻转成1&#xff0c;只需要找到最长的子数组且该子数组中0的个数不大于K&#xff0c;就可以了&#xff01; 当然我们首先想到的是暴力穷举法&#xff1a; 找到所有符合题意的子数组&#xff0c;跳出最长的那个就可以了…

Python中的异常处理:深入探索try-except-finally结构

Python中的异常处理&#xff1a;深入探索try-except-finally结构 一、引言 在Python编程中&#xff0c;异常处理是一个非常重要的部分。当程序遇到错误时&#xff0c;比如尝试除以零、文件读取失败等&#xff0c;Python会抛出一个异常。如果我们不捕获这些异常&#xff0c;程…

Spring AI实战之一:快速体验(OpenAI)

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 关于Spring AI Spring Boot、Spring Cloud、Spring Data&#xff0c;作为一名Java程序员&#xff0c;相信您对这些概览早已耳熟能详&#xff0c;或者天天在用…

Django中如何让页面之间建立关系

今天给大家讲解两种让页面建立联系的方式 一、重定向 二、表单提交 先看第一种方式&#xff0c;重定向 首先需要了解客户端发起请求的过程 1、客户端向服务端发起请求,比如请求地址是&#xff1a;http://127.0.0.1:8000/lili/submit/ 2、程序根据路由找到视图函数 3、执行视…

Dapper的快速使用

Dapper是.NET下一个轻量级的ORM框架,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的。也就是说实体类都要自己写。它没有复杂的配置文件,一个单文件就可以了。Dapper通过扩展IDbConnection提供一些有用的扩展方法去查询您的数据库。 可以分为三个步骤:…

c++ 刷题代码加速

代码 #define __SANITIZE_ADDRESS__ 0 #pragma comment(linker, "/stack:200000000") #pragma GCC optimize("Ofast,no-stack-protector") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tunenative") #pragma GCC optimiz…

sqlserver中替换空格和换行

sqlserver 中换行符&#xff0c;如下&#xff1a; sql语句如下&#xff08;只是在window系统中&#xff09;&#xff1a; //替换换行-使用char(10)或者char(13) select REPLACE(F_CNKITitle ,char(10),) title from tzkj_CNKIContent tc where --F_CnkiContentID ffdc7412-41…

libssh C++封装之四(SCP)

1 概述 libssh是一个在客户端和服务器端实现SSHv2协议的多平台C库。使用libssh,您可以远程执行程序、传输文件、使用安全透明的隧道、管理公钥等等。本文描述的对libssh客户端功能的C++封装。 libssh下载地址 3 实现 3.3 Scp Scp类型通过SCP协议管理远程文件,可以上传和下载…

STM32开发中循环队列的使用

目录 STM32开发中循环队列的使用 串口通讯配合循环队列使用的大概流程 循环队列queue.h文件 循环队列queue.c文件 STM32开发中循环队列的使用 在进行stm32开发时&#xff0c;往往会需要进行板卡间的通讯&#xff0c;而这时我们通常会使用到串口通讯的功能。使用串口通讯搭配…

AI智剪新风尚:一键操作,批量视频剪辑轻松入门

随着科技的飞速进步&#xff0c;人工智能(AI)已逐渐渗透到我们生活的各个领域&#xff0c;其中&#xff0c;AI视频剪辑技术的出现&#xff0c;为视频制作带来了革命性的变革。如今&#xff0c;一键操作、批量处理的AI智剪正成为视频剪辑的新风尚&#xff0c;让剪辑工作变得前所…

Mysql进阶-索引篇

Mysql进阶 存储引擎前言特点对比 索引介绍常见的索引结构索引分类索引语法sql分析索引使用原则索引失效的几种情况sql提示覆盖索引前缀索引索引设计原则 存储引擎 前言 Mysql的体系结构&#xff1a; 连接层 最上层是一些客户端和链接服务&#xff0c;主要完成一些类似于连接…

持续总结中!2024年面试必问 100 道 Java基础面试题(三十七)

上一篇地址&#xff1a;持续总结中&#xff01;2024年面试必问 100 道 Java基础面试题&#xff08;三十六&#xff09;-CSDN博客 七十三、什么是hash冲突&#xff1f; 在计算机科学中&#xff0c;特别是在数据结构和算法领域&#xff0c;哈希冲突&#xff08;Hash Collision&…

HI3516CV610

一、总体介绍 HI3516CV610是一颗应用在安防市场的IPC SoC&#xff0c;在开放操作系统、新一代视频编解码标准网络安全和隐私保护、人工智能方面引领行业发展&#xff0c;主要面向室内外场景下的枪机、球机、半球机、海螺机、枪球一体机、双目长短焦机等产品形态&#xff0c;打…

访问网络附加存储:nfs

文章目录 访问网络附加存储一、网络附加存储1.1、存储类型1.3、通过NFS挂载NAS1.4、NFS挂载过程服务端客户端 二、实验&#xff1a;搭建NFS服务端及挂载到nfs客户端服务端客户端测试命令合集服务端客户端 访问网络附加存储 一、网络附加存储 1.1、存储类型 DAS&#xff1a;Di…

学习Uni-app开发小程序Day6

今天是学习的第六天&#xff0c;把以前的重新回顾一次&#xff0c;加深记忆 v-for列表循环和复选框展示 这是vue的学习知识&#xff0c;在组件中使用后v-for&#xff0c;方式有几种&#xff0c; v-for“item in 数据源” v-for“&#xff08;item &#xff0c; index&#xff0…

零代码编程:用Kimichat从PDF文件中批量提取图片

一个PDF文件中&#xff0c;有很多图片&#xff0c;想批量提取出来&#xff0c;可以借助kimi智能助手。 在借助kimi智能助手中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个网页爬取Python脚本的任务&#xff0c;具体步骤如下&#xff1a; 打开文件夹…

2024年融资融券利率最新变化,又降低了?

最近有很多朋友在问我问融资融券的业务&#xff0c;都是比较关心这个利率的问题。确实&#xff0c;做融资融券最重要的利率&#xff0c;利率低会节省很大一笔资金&#xff0c;今天在这边给大家对接一个上市券商&#xff0c;可以给到大家万一的交易佣金和5%的融资利率&#xff0…

行业早报5.9

1.LG Display 一季度营收 5.253 万亿韩元&#xff0c;同比增长 19%&#xff1b; 2.郭明錤预测英伟达 2025 年第 4 季度量产新一代 R 系列 AI 芯片&#xff1b; 3.小鹏汽车 4 月交付量 9393 辆&#xff1a;同比增长 33%&#xff1b; 4.中国儒意 2.59 亿元收购有爱互娱&#xff0…

乡村振兴规划设计一站式资料大全,能为乡村振兴从业者带来什么帮助?

乡村振兴规划设计一站式资料大全对于乡村振兴从业者来说&#xff0c;具有非常重要的帮助作用。这种资料大全通常包含了从政策解读、市场分析、规划设计、到实施策略等各个方面的详尽信息&#xff0c;能够极大地提升从业者的工作效率和专业能力。 具体来说&#xff0c;乡村振兴规…