Python读字节某一位的值,设置某一位的值,二进制位操作

??在物联网实际应用项目开发中,为了提升性能,与设备端配合,往往最终使用的是二进制字节串方式进行的通信协议封装,更会把0和1、True和False、Yes和No这样的布尔值每8个只占用一个字节,用字节中的位来表示。减少传输量,减少对网络稳定性的要求。这就带来了要怎么读某个字节中每一位的值和怎么设置每一位的值的问题。

??这几天再写培训演示代码,顺便就写了两个函数,解决字节位值读写问题,现在分享给大家。

??下面直接上代码,在Python3上测试通过:

#!/usr/bin/env python

# -*- coding: utf-8 -*-

def get_bit_val(byte, index):

"""

得到某个字节中某一位(Bit)的值

:param byte: 待取值的字节值

:param index: 待读取位的序号,从右向左0开始,0-7为一个完整字节的8个位

:returns: 返回读取该位的值,0或1

"""

if byte & (1 << index):

return 1

else:

return 0

def set_bit_val(byte, index, val):

"""

更改某个字节中某一位(Bit)的值

:param byte: 准备更改的字节原值

:param index: 待更改位的序号,从右向左0开始,0-7为一个完整字节的8个位

:param val: 目标位预更改的值,0或1

:returns: 返回更改后字节的值

"""

if val:

return byte | (1 << index)

else:

return byte & ~(1 << index)

print(get_bit_val(3, 2)) # 3的2进制00000 0 11,2号位是0,打印结果0

print(get_bit_val(3, 1)) # 3的2进制000000 1 1,1号位是1,打印结果1

print(get_bit_val(3, 5)) # 3的2进制00 0 00011,5号位是0,打印结果0

print(set_bit_val(3, 2, 1)) # 3的2进制00000 0 11,2号位改成1,打印结果7(00000111)

print(set_bit_val(3, 1, 0)) # 3的2进制000000 1 1,1号位改成0,打印结果1(00000001)

print(set_bit_val(3, 5, 0)) # 3的2进制00 0 00011,5号位改成0,打印结果3(00000011)

"""

控制台输出:

0

1

0

7

1

3

"""

python中指定变量为1byte_Python读字节某一位的值,设置某一位的值,二进制位操作...相关推荐

  1. Python入门 - 笔记 - 第三章 Python中的变量和数据类型

    第三章 Python中的变量和数据类型 -------------------------------------------------------------------------------- ...

  2. 深入解析Python中的变量和赋值运算符

    Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...

  3. python中 是什么类型_浅谈python中的变量默认是什么类型

    浅谈python中的变量默认是什么类型 1.type(变量名),输出的结果就是变量的类型: 例如 >>> type(6) 2.在Python里面变量在声明时,不需要指定变量的类型,变 ...

  4. 【Python】Python实战从入门到精通之一 -- 教你深入理解Python中的变量和数据类型

    本文是Python实战–从入门到精通系列的第一篇文章: Python实战从入门到精通之一 – 教你深入理解Python中的变量和数据类型 文章目录 1.变量 1.1 变量命名规则 1.2 变量名称错误 ...

  5. python一般的基础代码-Python中的变量,一切代码的基础,你掌握了吗

    学习编程,首先要学习的,肯定就是变量了,因为变量是一切代码的基础,变量里面会介绍到python的很多知识点,都是python的基础知识,对于刚入门的同学非常重要. 一.什么是变量 变量存储在内存中的值 ...

  6. python中的变量不需要声明

    python中的变量不需要声明. 每个变量在使用前都必须赋值,变量复制以后该变量才会被创建.在Python中,变量就是变量,它没有类型, 我们所说的"类型"是变量所指的内存中对象的 ...

  7. python中的变量是动态类型的什么意思_Python零基础入门(一):对Python的简单认识...

    点击蓝字 关注浅韵 一起划水 写在前面 期末考试告一段落之后,这个公众号又活了. 漫长的假期,想玩也是肯定的,但是发现自己想学的东西也很多,想写的东西也很多,所以给自己来了一个假期整活计划. 在这个假 ...

  8. python 中的变量

    1.变量的创建与赋值 在python中,变量是用一个变量名表示,可以是任意数据类型,变量名必须是大小写英文.数字和下划线的组合,且不能数字开头. python 相比于其他语法来说 是不用声明变量的数据 ...

  9. 【Python】Python中令人头疼的变量作用域问题,终于弄清楚了

    [Python]Python中令人头疼的变量作用域问题,终于弄清楚了_fengdu78的博客-CSDN博客 [Python]Python中令人头疼的变量作用域问题,终于弄清楚了_fengdu78的博客 ...

最新文章

  1. 路由器、路由与路由表
  2. 基因结构图绘制-单个基因
  3. 怎么共享电脑上的文件_电脑小技巧--远程访问共享文件夹
  4. IFE-16 addEventHandler跨浏览器实现事件绑定
  5. 案例分析 | 由Decimal操作计算引发的Spark数据丢失问题
  6. EditPlus软件自动补全文档htmlbar.acp设置 及 模板文件格式
  7. CAEmitterLayer实现粒子效果
  8. Git 存储原理及相关实现
  9. python适合自学编程吗-对于0基础的人,直接学 Python 编程合适吗?
  10. 有观赏性的c语言程序,设计一个C语言程序,对以孩子链表表示的树计算该树的深度- 一起装修网...
  11. CentOS6.7 Mysql5.6.35版本 源码编译+Mysql数据库忘记root密码如何修改
  12. 关于 activit 与 flowable 项目报错 --Cannot resolve the name ‘extension‘ to a (n) ‘element declaration‘ comp
  13. java 如何去掉http debug日志_Java高手如何搭建高效易用的日志系统
  14. Thinkphp金融超市贷超平台源码带三级分销
  15. 信息系统项目管理师论文写作技巧
  16. DevExpress TreeList GridView 样式设置
  17. 现代管理学 罗珉 第三版
  18. android模拟器脚本,安卓模拟器脚本制作工具
  19. 2007-2008 火箭赛程表
  20. Bugku-CTF之login3(SKCTF)(基于布尔的SQL盲注)

热门文章

  1. Java面向对象基础整理
  2. 7.类的访问控制和继承
  3. Android 面试 - compileSdkVersion、minSdkVersion、targetSdkVersion、buildToolsVersion
  4. Java instanceof 关键字【复习】
  5. stm32数据手册中文_浅聊STM32系统构架
  6. linux连接redis 命令_在Docker中使用Redis
  7. linux内核红宝书,Solaris 10红宝书 9.3
  8. 通信基站电源维护培训PPT课件
  9. 下列关于php说法错误的,PHP试题
  10. AI:2020年WAIC世界人工智能大会2020年7月9日9:30-12:00开幕式《李彦宏、Elon Musk、马云等大佬演讲》