当前位置: 首页 > news >正文

C#【必备技能篇】替换一个字节(byte)中连续几位(bit)的内容

文章目录

  • 一、一个示例
  • 二、通用方法

一、一个示例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{class Program{static void Main(string[] args){Method1();}public static void Method1(){// 假设这是你的原始字节  byte originalByte = 0b10101010; // 二进制表示为 10101010  // 假设你想从第3位开始更改接下来的3位(注意:位是从0开始计数的)  // 新的值是 011(二进制),它将被放入原始字节的第3到第5位  // 首先,我们需要一个掩码来清除第3到第5位  int V = ~(0b111 << 3);byte mask = (byte)V; // 使用 ~ 操作符创建掩码,这里将 0111 左移3位得到 111000,然后取反得到 000111  Console.WriteLine($"mask: {Convert.ToString(mask, 2).PadLeft(8, '0')}");// 清除原始字节中的旧值  byte clearedByte = (byte)(originalByte & mask); // 现在 clearedByte 在第3到第5位上是0,其他位保持不变  Console.WriteLine($"clearedByte: {Convert.ToString(clearedByte, 2).PadLeft(8, '0')}");// 现在设置新值,将 011 左移3位(因为我们从第3位开始设置)  byte newValue = (byte)((0b011 << 3) & 0xFF); // 0xFF 确保结果是一个字节  Console.WriteLine($"newValue: {Convert.ToString(newValue, 2).PadLeft(8, '0')}");// 将新值放入原始字节的相应位置  byte finalByte = (byte)(clearedByte | newValue);// 输出结果  Console.WriteLine($"Original: {Convert.ToString(originalByte, 2).PadLeft(8, '0')}");Console.WriteLine($"Final:    {Convert.ToString(finalByte, 2).PadLeft(8, '0')}");Console.ReadLine();}}
}

输出结果:

mask: 11000111
clearedByte: 10000010
newValue: 00011000
Original: 10101010
Final:    10011010

二、通用方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp1
{class Program{static void Main(string[] args){Method2();}private static void Method2(){// 假设这是你的原始字节  byte originalByte = 0b10101010; // 二进制表示为 10101010  // 假设你想从第3位(从0开始计数)开始更改接下来的2位  int startPos = 3;int numBits = 3;// 创建一个掩码来清除目标位  byte mask = (byte)((1 << numBits) - 1); // 创建一个只在最低numBits位为1的掩码  mask = (byte)(mask << startPos); // 将掩码左移startPos位  mask = (byte)(~mask); // 取反掩码,得到要清除的位的掩码  Console.WriteLine($"mask: {Convert.ToString(mask, 2).PadLeft(8, '0')}");// 清除原始字节中的旧值  byte clearedByte = (byte)(originalByte & mask); // 使用mask来清除目标位  Console.WriteLine($"clearedByte: {Convert.ToString(clearedByte, 2).PadLeft(8, '0')}");// 假设这是新的值(以二进制形式表示,但这里我们将其转换为整数)  // 例如,新的值是111(二进制),但我们需要左移它以匹配startPos  int newValue = 0b111; // 注意:这里newValue是一个int,因为我们稍后会进行左移  newValue = newValue << startPos; // 将newValue左移到正确的位置  Console.WriteLine($"newValue: {Convert.ToString(newValue, 2).PadLeft(8, '0')}");// 注意:newValue现在可能是一个大于byte的int,但我们只关心它的最低8位  // 因此,我们可以直接进行位或操作,因为byte类型在C#中会自动进行模256操作  byte finalByte = (byte)(clearedByte | (byte)newValue);// 输出结果  Console.WriteLine($"Original: {Convert.ToString(originalByte, 2).PadLeft(8, '0')}");Console.WriteLine($"Final:    {Convert.ToString(finalByte, 2).PadLeft(8, '0')}");Console.ReadLine();}}
}

输出结果:

mask: 11000111
clearedByte: 10000010
newValue: 00111000
Original: 10101010
Final:    10111010

相关文章:

C#【必备技能篇】替换一个字节(byte)中连续几位(bit)的内容

文章目录 一、一个示例二、通用方法 一、一个示例 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ConsoleApp1 {class Program{static void Main(string[] args){Method1();}public static…...

roboguide将tp程序转化为LS文本格式的方法

不同的软件版本可能操作不同&#xff0c;但是仍然可以参考文章中的办法。 我使用的版本如图所示&#xff1a; 1.首先&#xff0c;打开任意一个工程&#xff0c;如果没有&#xff0c;可以打开自带的示例。 如图&#xff0c;我打开了自带的示例&#xff0c;在帮助文档中可以找到…...

基于SpringBoot+Vue+MySQL的流浪猫狗宠物救助救援网站管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 在当今社会&#xff0c;随着宠物数量的激增及人们关爱动物意识的提升&#xff0c;流浪猫狗问题日益严峻。为解决这一问题&#xff0c;构建一套高效、便捷的流浪猫狗宠物救助救援网站管理系统显得尤为重要。本系统基于SpringBoot…...

I/O 多路复用:`select`、`poll`、`epoll` 和 `kqueue` 的区别与示例

I/O 多路复用是指在一个线程内同时监控多个文件描述符&#xff08;File Descriptor, FD&#xff09;&#xff0c;以便高效地处理多个 I/O 事件。在 UNIX/Linux 和 BSD 系统中&#xff0c;select、poll、epoll、kqueue 都是实现 I/O 多路复用的系统调用。它们各有特点&#xff0…...

大数据之Flink(三)

9.3、转换算子 9.3.1、基本转换算子 9.3.1.1、映射map 一一映射 package transform;import bean.WaterSensor; import org.apache.flink.streaming.api.datastream.DataStreamSource; import org.apache.flink.streaming.api.datastream.SingleOutputStreamOperator; impor…...

【HCIA-Datacom】IPv4地址介绍

| | &#x1f449;个人主页&#xff1a;Reuuse 希望各位多多支持&#xff01;❀ | &#x1f449;HCIA专栏博客 | 最后如果对你们有帮助的话希望有一个大大的赞&#xff01; | ⭐你们的支持是我最大的动力&#xff01;⭐ | 目录 IPv4地址定义IPv4地址分类方式二级目录三级目录 I…...

maven父子工程多模块如何管理统一的版本号?

1.为什么要统一管理&#xff1f; maven父子工程多模块&#xff0c;每个模块还都可以独立存在&#xff0c;子模块往往通常希望和父工程保持一样的版本&#xff0c;如果每个工程单独定义版本号&#xff0c;后期变更打包也非常麻烦&#xff0c;如何维护一个全局的版本号呢&#x…...

JavaScript --函数的作用域(全局和局部)

全局作用域 全局作用域&#xff0c;就算不在一个script标签也能调用 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta nam…...

贪吃蛇项目实现(C语言)——附源码

前言 贪吃蛇是一款十分经典的游戏&#xff0c;其通过控制贪吃蛇的上下左右移动来吃食物&#xff0c;延长自己的身体&#xff0c;也会因为撞到墙体和自身而死亡。下面我们通过C语言来实现贪吃蛇。 1.技术要点 C语言枚举&#xff0c;结构体&#xff0c;链表&#xff0c;动态内…...

【C++】42道面试经典问题总结

C this指针是干什么用的&#xff1f; 假如一个类型定义了很多对象&#xff0c;类里面有很多定义的私有成员变量&#xff0c;共享一套成员方法。通过this指针这可以区分方法、变量是操作的哪个对象的。 C的new和delete&#xff0c;new[]和delete[]可以混用吗&#xff1f; 一般来…...

php 实现JWT

在 PHP 中&#xff0c;JSON Web Token (JWT) 是一种开放标准 (RFC 7519) 用于在各方之间作为 JSON 对象安全地传输信息。JWT 通常用于身份验证系统&#xff0c;如 OAuth2 或基于令牌的身份验证。 以下是一个基本的 PHP 实现 JWT 生成和验证的代码示例。 JWT 的组成部分 JWT …...

vue table id一样的列合并

合并场景&#xff1a;如果id一样&#xff0c;则主表列合并&#xff0c;子表列不做合并&#xff0c;可实现单行、多行合并&#xff0c;亲测&#xff01;&#xff01;&#xff01; 展示效果如图示&#xff1a; 组件代码&#xff1a; // table组件 :span-method"objectSpa…...

xshell密钥方式连接阿里云Linux

前提条件 有阿里云ECS linux实例安装好xshell工具 步骤 创建密钥对并绑定ECS实例 浏览器登录阿里云-->控制台-->ECS服务器-->网络与安全-->密钥对-->创建密钥对 根据提示填写密钥名称-->选中默认资源组-->创建 创建完成&#xff0c;会自动下载密钥对的…...

Wni11 下 WSL 安装 CentOS

Wni11 下 WSL 安装 CentOS 方法一、安装包安装下载包安装安装打开 CentOS1. 从 Windows 终端 打开2. 从 PowerShell 打开 方法二、导入 CentOS 的 tar 文件进行安装0. 查看版本&#xff08;可选&#xff09;1. 导出 Docker 容器到 tar 文件2. 将 tar 文件导入 WSL2.1. 导入 tar…...

ROADM(可重构光分插复用器)-介绍

1. 引用 https://zhuanlan.zhihu.com/p/163369296 https://zhuanlan.zhihu.com/p/521352954 https://zhuanlan.zhihu.com/p/91103069 https://zhuanlan.zhihu.com/p/50610236 术语&#xff1a; 英文缩写描述灰光模块彩光模块CWDM&#xff1a;Coarse Wave-Length Division …...

HarmonyOS开发之路由跳转

文章目录 一、路由跳转模式与实例1.router.pushUrl2.router.replaceUrl3.router.back 一、路由跳转模式与实例 跳转模式 有点类似于vue的路由跳转 router.pushUrl 保留路由栈&#xff0c;保留当前的页面&#xff1b;router.replaceUrl 销毁当前页面&#xff0c;跳转一个新的页…...

怎么使用ai 免费生成ppt?这4个工具可以帮忙

随之AI工具的流行&#xff0c;网络上也涌现了一批 AIPPT 工具&#xff0c;可以在办公上帮助我们节省很多制作PPT的时间。通常它们的操作也比较简单&#xff0c;所以适合很多人使用。为了可以帮助大家提高办公效率&#xff0c;我在这里跟大家分享4款可以免费使用的AIPPT制作工具…...

Android主副屏显示-Android13

Android主副屏显示-Android13 1、DisplayDeviceInfo屏幕信息2、每个屏幕对应LogicalDisplay2.1 LogicalDisplay添加对应DisplayContent2.2 configureDisplayLocked刷新 DisplayManagerService启动及主屏添加-Android13 1、DisplayDeviceInfo屏幕信息 DisplayManagerService启动…...

什么是 SMB 服务器以及它如何工作?

在本文中&#xff0c;您将了解 SMB 服务器以及它们如何促进网络文件共享。 我们将介绍它们的基本功能、主要特性以及如何安全地设置它们。无论您是新手还是需要复习&#xff0c;本指南都将帮助您更好地了解 SMB 服务器。 什么是 SMB 服务器&#xff1f; SMB&#xff08;服务器…...

【python计算机视觉编程——10.OpenCV】

python计算机视觉编程——10.OpenCV 10.OpenCV10.2 OpenCV基础知识10.2.1 读取和写入图像10.2.2 颜色空间10.2.3 显示图像及结果 10.3 处理视频10.3.1 视频输入10.3.2 将视频读取到NumPy数组中 10.4 跟踪10.4.1 光流10.4.2 Lucas-Kanade算法使用跟踪器使用发生器 10.5 更多示例…...

Python 函数式编程利器:Partial 与 ParamSpec 技术解析

partial 是 Python functools 模块中的偏函数&#xff0c;核心作用是「冻结」一个函数的部分参数&#xff08;位置参数或关键字参数&#xff09;&#xff0c;生成一个新的函数&#xff0c;新函数调用时只需传入剩余未被冻结的参数即可&#xff0c;无需重复传入固定参数&#xf…...

YouDownSet v1.3.76-多平台无需会员即可下载8K/4K视频,满速109.5MB/s!

一款面向电脑端打造的多平台视频下载工具&#xff0c;支持高分辨率内容获取和多线程任务处理&#xff0c;适合经常需要保存在线视频的用户使用。软件的一大亮点在于支持 8K、4K 等高画质下载&#xff0c;并且整体流程非常直接&#xff0c;用户只需开启一键下载功能后粘贴目标地…...

Harmonyos应用实例214:空间角与距离计算器

6. 空间角与距离计算器 功能简介:利用空间向量计算异面直线所成角、直线与平面所成角、二面角,以及点到平面的距离。通过输入向量坐标,实时计算并展示结果,帮助学生掌握空间角与距离的向量计算方法。 ArkTS代码: @Entry @Component struct SpaceVectorCalculator {@Stat…...

CSS图片轮播进阶:5种实现无限循环滚动的实战技巧(附完整代码)

CSS图片轮播进阶&#xff1a;5种实现无限循环滚动的实战技巧&#xff08;附完整代码&#xff09; 在电商网站的首页或个人作品集的展示页面中&#xff0c;图片轮播&#xff08;Carousel&#xff09;始终是吸引用户注意力的利器。而无限循环滚动效果&#xff0c;则能让有限的展示…...

降AIGC哪家强?2026零成本保姆级教程:DeepSeek/Kimi/豆包专属降重指令实测与差异解析

很多时候大学生写论文逻辑太严谨、话术太规范&#xff0c;反而会导致AI率过高&#xff0c;且一旦AI率过高&#xff0c;轻则退回重改&#xff0c;重则取消答辩资格&#xff0c;这后果谁都担不起。 为了帮大家有效降低aigc率&#xff0c;这周我专门针对目前市面上最主流的三款大…...

先整个经典的入门款耶路撒冷十字电阻吸波器玩吧,就冲5.8GHz的WiFi频段调——毕竟现在连吸波材料都得先蹭蹭网络信号的热度才好入门嘛

CST仿真吸波器选5.8GHz有个小小心思&#xff1a;单层电阻超材料的谐振频率一般和单元边长相关&#xff0c;大概是谐振波长的0.2-0.4倍&#xff08;等效介电常数εr算进去的话还要除以√εr的平方根&#xff09;&#xff0c;用的FR-4基板ε_r4.4、tanδ0.025、厚度1mm&#xff0…...

云上实战说 | TapNow x Google Cloud 带您体验从灵感到资产的秒级转化

以下文章来源于谷歌云服务&#xff0c;作者 Google Cloud基于 Google Cloud Veo 和 Nano Banana 的前沿能力&#xff0c;TapNow (万物形象所) 邀您体验生成式 AI 如何重塑品牌与自我表达。现场实时生成风格化写真、宠物贴纸及周边&#xff0c;直观感受从灵感到资产的极速转化&a…...

PWM技术原理与电机调速应用详解

PWM技术原理与电机调速应用详解1. PWM基础概念解析1.1 脉冲宽度调制定义PWM(Pulse Width Modulation)即脉冲宽度调制&#xff0c;是一种通过调节脉冲信号的宽度(占空比)来实现能量控制的电子电力技术。该技术在直流电机调速、开关电源、逆变器等电力电子领域有广泛应用。1.2 脉…...

NXP S32K3xx之HSE密钥管理与安全服务实战

1. HSE密钥管理基础&#xff1a;从零开始理解安全引擎 第一次接触NXP S32K3xx的HSE模块时&#xff0c;我被各种密钥术语搞得晕头转向。经过几个实际项目的打磨&#xff0c;现在我可以负责任地告诉你&#xff1a;理解HSE密钥管理就像学习一门新语言&#xff0c;掌握基础词汇后就…...

G-Helper:华硕笔记本电池健康管理的终极轻量化解决方案

G-Helper&#xff1a;华硕笔记本电池健康管理的终极轻量化解决方案 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models 项目地…...