吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 714|回复: 5
收起左侧

[求助] pytho进制转换的问题

[复制链接]
molinchz 发表于 2021-11-15 11:04
请大佬帮忙 看下
ybnum = 360
print(hex(ybnum))   # 转换为十六进制
# 数量二个字节高低位交换
data_byte1 = ybnum.to_bytes(length=2, byteorder='little', signed=True)
print(data_byte1)
print(type(data_byte1))
得到结果 很奇怪:0x168b'h\x01'<class 'bytes'>
怎么变成 h 了,这个怎样把 h 还原 68啊 ,不是就是length 参数能不能搞成变量,这样ybunm 可以二字节的长度,要怎样写,谢谢

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

pzx521521 发表于 2021-11-15 13:44
本帖最后由 pzx521521 于 2021-11-15 13:46 编辑

默认显示成字符串了而已 不用管的, 数值没问题的
h在ascii里面 是104 -> 对应16进制是 68, h本来就是/x68, 或者说/x68就会显示为h
本来是 01 68 高低位变换后是 68 01 十进制就是 26625
最后一句看不懂
 楼主| molinchz 发表于 2021-11-15 14:20
pzx521521 发表于 2021-11-15 13:44
默认显示成字符串了而已 不用管的, 数值没问题的
h在ascii里面 是104 -> 对应16进制是 68, h本来就是/x68, ...

ybnum = 200
data_byte1 = ybnum.to_bytes(length=2, byteorder='little', signed=True).hex()
print(data_byte1)
print(type(data_byte1))
a1 = data_byte1.encode(encoding="utf-8")
print(a1)
我改这样,就可以了,但a1是结果是 b'c800'   怎样把它变成    b'\xc8\x00'   ,因为我要写入.bin文件 里
geyee 发表于 2021-11-15 14:31
十进制数360转换为十六进制表示为0x0168。大端字节序为01 68,小端则为68 01。字母h的ascii码为104,即0x68,hex(ord('h'))可返回。print("b'\x68")返回b'h。
import math
data_byte1 = ybnum.to_bytes(math.ceil(ybnum.bit_length()/8),byteorder='little', signed=True)
pzx521521 发表于 2021-11-15 14:36
不要.hex() 不要 encoding="utf-8"
你看到的b'c800' 和计算机看到b'\xc8\x00'不是一个东西
ybnum = 200
data_byte1 = ybnum.to_bytes(length=2, byteorder='little', signed=True)
这样出来的就是   b'\xc8\x00'
'h\x01' 和 \x68\x01 是等价的  原因上面说了   print 会把\x68 翻译成h, 因为h对应的编码ascii就是\x68   
你可以这样理解:
byte 这个类型可以翻译成数字  也可以翻译成 char  , print函数会默认翻译成char  方便看

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
molinchz + 1 + 1 谢谢@Thanks!

查看全部评分

 楼主| molinchz 发表于 2021-11-15 16:34
pzx521521 发表于 2021-11-15 14:36
不要.hex() 不要 encoding="utf-8"
你看到的b'c800' 和计算机看到b'\xc8\x00'不是一个东西
ybnum = 200

老师,你是对的,确实如你所说,很感谢 ,昨天 搞了一天,原来是显示 的问题,真正写入编码是对的
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 20:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表