# Python 十六进制hex-bytes-str之间的转换和Bcc码的生成

## 实例

1.转为十六进制（Hex）字符串

``` def getStringFromNumber(self,size,value):
"""
转为十六进制（Hex）字符串
:param size:
:param value:
:return:
"""
size=int(size)
value=int(value)
by = bytearray([])
for i in range(1,size+1):
val = value >> 8 * (size - i) & 255
by.append(val)
val = by.hex()
print("===============================")
print("%s转为%s个字节十六进制（Hex）字符串:%s"%(value,size,val))
print("===============================")
return val
getStringFromNumber(5,11)```

2.bcc校验码

```    def bcc(self,value):
"""
bcc 检查码
:param number:
:return:
"""
numb = len(number)
nb = int(numb / 2)
bcc = 0
for i in range(nb):
a = 2 * i
b = 2 * (i + 1)
aa = number[a:b]
bcc = bcc ^ int(aa, 16)
print("===============================")
print("生成bcc码:%s" % f'{bcc:x}')
print("===============================")
return f'{bcc:x}'
bcc('11111111111111111111111111111111111111111111111111111111111222222222222222222222')
```

3.时间字节数组（byte[]）转为十六进制（Hex）字符串和解码时间

```   def datetime(self):
"""
字节数组（byte[]）转为十六进制（Hex）字符串
:return:
"""
print("===============================")
current_time = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time()))
datatime = current_time[2:]
by = bytearray([])
aa = datatime.split("-")
for val in aa:
by.append(int(val))
val = by.hex()
print("当前%s转化十六进制:%s" % (current_time, val))
return val

def time_hex_dec(self,number):
"""
时间解码
:param number:
:return:
"""
numb = len(number)
nb = int(numb / 2)
datatime=[]
for i in range(nb):
a = 2 * i
b = 2 * (i + 1)
num = number[a:b]
datatime.append(num)
Gettime ="20"
for key,val in enumerate(datatime):
b = eval("0x" + val)
Gettime += str(b)
if key <5:
Gettime = Gettime +"-"
print('时间解码:%s' % Gettime)
print("===============================")
return Gettime

time = datetime()
time_hex_dec(time)```

4.字符串转16进制 与 16进制转字符串

``` def str_to_hex(self,data):
"""
# 字符串转16进制
:param data:
:return:
"""
print("===============================")
str_16 = binascii.b2a_hex(data.encode('utf-8'))
print("字符串%s转16进制:%s"%(data,str_16))
return str_16

def hex_to_str(self,data):
"""
# 16进制转字符串
:param data:
:return:
"""
strs = (binascii.unhexlify(data)).decode()
print("16进制%s转字符串:%s"%(data,strs))
print("===============================")
return strs
data = str_to_hex("wencheng你好")
hex_to_str(data)
```

5.字符串转字节 str --> bytes与字节转字符串 bytes --> str

``` def str_to_bytes(self,b):
"""
字符串转字节  str --> bytes
:param b:
:return:
"""
print("===============================")
print(str.encode(b))  # 默认 encoding="utf-8"
print(bytes(b, encoding="utf8"))
print(b.encode())  # 默认 encoding="utf-8"
return str.encode(b)

def bytes_to_str(self,a):
"""
字节转字符串 bytes  --> str
:param b:
:return:
"""
print(bytes.decode(a))  # 默认encoding="utf-8"
print(str(a, encoding="utf-8"))
print(a.decode())  # 默认 encoding="utf-8"
print("===============================")
data = str_to_bytes("wencheng你好")
bytes_to_str(data)```

0 条评论

• ### python生成指定大小的测试txt文档

在测试过程中经常遇到文件上传的功能，文件的大小边界值测试一直没有好的解决办法，这里我分享一个创建文件的脚本希望对大家有帮助。

• ### Docker下搭建jenkins学习笔记

今天给大家分享下如何在Docker下搭建jenkins构建环境直接使用docker镜像真是简单除暴无脑，现在分享给大家，也给大家做个参考。

• ### Python Faker随机生成测试数据（干货）

Faker是一个Python软件包，可为您生成伪造数据。无论您是需要引导数据库，创建美观的XML文档，填充持久性以进行压力测试还是匿名化来自生产服务的数据，Fa...

• ### python时间操作

1357548276.53 2013-01-07 08:44:36 1357519476.0 ++++++++++++++++++++++++++++++...

• ### python常见模块-collections-time-datetime-random-os-sys-序列化反序列化模块(json-pickle)-subprocess-03

小结：时间戳是计算机能够识别的时间；格式化时间是人能够看懂的时间；结构化时间则是用来操作时间的

• ### 在Mapx中设置单个图元的样式

前几天研究了一下，感觉都快忘了。虽然去啃帮助仍然可以把这些东西啃出来，但有点烦。把记忆的东西零星整理一下： Mapx4不支持具体到图元的样式的指...

• ### unittest批量组织依赖用例(组织依赖用例,结果前端展示,测试报告发送 )

在上一篇《unittest批量组织依赖用例(一)》，我们讲了在拿到依赖case的情况下如何批量生成测试方法，那么如何组织依赖case呢，我们今天来试试~本次以E...

• ### 每一个程序员要遵守的一些优秀编程风格

无论你是业余的还是专业的程序员，正确的编程风格，不但有助于提升软件产品的功能，还可以明显减少软件灾难的产生。今天，我们就来探讨一下有助于我们获取更佳编程风格的一...

• ### Python爬虫JSON及JSONPath运行原理详解

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式，它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。...