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获取二进制bit位_Python读字节某一位的值,设置某一位的值,二进制位操作...相关推荐

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

    Python读字节某一位的值,设置某一位的值,二进制位操作 ??在物联网实际应用项目开发中,为了提升性能,与设备端配合,往往最终使用的是二进制字节串方式进行的通信协议封装,更会把0和1.True和Fa ...

  2. 如何用python获取通达信数据_Python读取通达信本地数据

    一.介绍 python获取股票数据的方法很多,其中 Tushare 财经数据接口包很好用,当然,也可以通过通达信本地的数据获取,这样更为方便. 日线数据存在这路径下 D:\通达信\vipdoc\sh\ ...

  3. python获取文件的大小_python获取文件大小

    python获取文件大小# !/usr/bin/python3.4 # -*- coding: utf-8 -*- import os # 字节bytes转化kb\m\g def formatSize ...

  4. python 写入csv有引号_python读带引号的csv--解决 'utf-8' codec can't decode

    由于防止0开头的字符串在excel里面显示不了前面的0,所以一般会转变格式,这个格式转变包含很多,包括前面加" '  "或者改为编码格式等,这种格式在转换为csv的时候就会是双引号 ...

  5. python获取系统时间月份_python 取数组绝对值python获取当前日期

    今天群里一个人问了怎么获取当前时间的问题,以前接触过计算日期之差的,具体代码如下: import datetime d1=datetime.datetime(2014,3,14) d2=datetim ...

  6. python获取系统时间函数_Python常用时间操作总结【取得当前时间、时间函数、应用等】...

    本文实例讲述了Python常用时间操作.分享给大家供大家参考,具体如下: 我们先导入必须用到的一个module >>> import time 设置一个时间的格式,下面会用到 > ...

  7. python获取某文件路径_Python获取当前文件路径

    一. Python 获取当前文件路径方法 2. sys.path[0] 获取文件当前工作目录路径(绝对路径) sys.argv[0]|获得模块所在的路径(由系统决定是否是全名) 若显示调用python ...

  8. python获取当前路径的方法_Python获取脚本所在目录的正确方法【转】

    原博文 2015-09-24 10:21 − 1.以前的方法如果是要获得程序运行的当前目录所在位置,那么可以使用os模块的os.getcwd()函数.如果是要获得当前执行的脚本的所在目录位置,那么需要 ...

  9. python 获取当前日期和时间_python获取当前日期和时间的方法

    本文实例讲述了python获取当前日期和时间的方法.分享给大家供大家参考.具体如下: import datetime # Get a datetime object now = datetime.da ...

最新文章

  1. apache用proxy 实现URL 转发
  2. 【C++快读快输详解(快速读入数字,快速输出数字)】
  3. a++浏览器_走进浏览器内部—剖析浏览器是如何工作的(上)
  4. python中count的作用_python中内置的.count是什么?
  5. 前端有关vue的面试题
  6. 腾讯地图api修改信息窗口样式_ThingJS通过地图的信息窗口展示常见数据
  7. Python开源软件大全(内附源码)
  8. PHP compact函数
  9. 如何使用Java读写系统属性?
  10. 万能显卡驱动win7_驱动工具更新!完美支持苹果电脑驱动
  11. STM32开发环境的搭建及使用——STM32CubeMX
  12. 软件二次开发平台简介
  13. 浅聊智能推荐下的人物画像
  14. Vue笔记 (一) Vue的MVVM
  15. Elasticsearch:sniffing 的最佳实践:What, when, why, how
  16. 联客云虚拟工作手机(云手机)应用行业及场景
  17. QT MetaImage 一款图片工具软件
  18. 一个快速测试PlayCanvas Demo 的工程(内附源码)
  19. HTTPS接口压测 --- hey工具
  20. MCNP5 粒子输运 常见问题汇总与踩坑记录(导火索:死循环)

热门文章

  1. 搭建个人私有服务器(四)—— 宝塔面板添加网站
  2. MySQL分区总结_mysql分区表小结2
  3. R绘图基础指南 | 2.折线图
  4. SSM高级整合-crud
  5. Ripple Labs和R3联盟在XRP代币诉讼中达成和解
  6. 用接口开发接PO收入库程序
  7. 程旭/王蒙岑/袁梦婷/李建刚/熊武客座主编Frontiers根际微生物组专刊征稿(IF6)
  8. SDUT-4100 C~K要找女朋友了!!!
  9. android 蓝牙搜索不到Ble设备
  10. did模型(did模型适用范围)