当前位置:网站首页>十六进制文本的字节序问题
十六进制文本的字节序问题
2022-08-02 18:42:00 【字母数字或汉字】
给定一个十六进制字符串,要将其转换为 uint64,即使是使用语言自带的类库,也可能遇到暗含的字节序问题。
import sysdef foo(s): b = bytearray.fromhex(s) return int.from_bytes(b, sys.byteorder)def bar(s): return int(s, 16)h = '0000000000000001'print(foo(h), bar(h)) # (72057594037927936, 1)对应的 C# 代码是
private static UInt64 foo(string s) { var b = Convert.FromHexString(s); return BitConverter.ToUInt64(b);}private static UInt64 bar(string s) { return Convert.ToUInt64(s, 16);}这些语言类库都做了一个假设,当我们直接把字符串 0001 作为十六进制转换成十进制时,是按“大端序”来解析的,其结果在小端序的机器上的字节顺序是 01 00。
当 0001 是一个字节数组时,其字节顺序被固定为 00 01,因此再将其按位直译成数字(不做解析),在小端序上就表示数字 0x00 + 0x01*256 == 256。
当然,语言类库也都提供了各种参数/方法来逆字节序:
b = bytearray.fromhex(s)# b.reverse() # 逆字节序return int.from_bytes(b, 'big') # 假设本机是 little,逆一次字节序var b = Convert.FromHexString(s);// Array.Reverse(b); // 逆字节序return BitConverter.ToUInt64(b);// return BinaryPrimitives.ReverseEndianness(x); // 逆字节序边栏推荐
猜你喜欢

Win11dll文件缺失怎么修复?Win11系统dll文件丢失的解决方法

Electronic Industry Inventory Management Pain Points and WMS Warehouse Management System Solutions

How to build a quasi-real-time data warehouse?

Boyun Selected as Gartner China DevOps Representative Vendor

中国科学院院属研究单位

7.25 - 每日一题 - 408

Win11主题下载一直转圈怎么办?Win11主题下载一直转圈的解决方法

From the technical panorama to the actual scene, analyze the evolutionary breakthrough of "narrowband high-definition"

音频隐写一

Endanger the safety of common Internet attacks have?
随机推荐
js Fetch返回数据res.json()报错问题
二本 两年经验读者 阿里P6面经
JVM内存和垃圾回收-06.本地方法栈
流量分析第一题
T5: Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer
日常开发中,String类中常用的方法
洛谷P2574 XOR的艺术
流量分析四—蓝牙
1.0.0到1.0.2的底层数据库表的更新,需要再重新自建数据库吗?
Boyun Selected as Gartner China DevOps Representative Vendor
Jellyfin 打造家庭影院 & 视频硬解 (威联通 QNAP)
请教一个数据库连接池的问题,目前已知是事务未设置超时,又有一块代码事务没有提交,一直把连接给耗尽了,
LSB利器-zsteg
Unity 打包和切换平台|Build Settings窗口介绍
C#里如何简单的校验时间格式
实例034:调用函数
WIFi 开关控制实现-ESP8266 物联网 android studio arduino QT多线程服务器
T31开发笔记:metaipc测试
3 and a half years of testing experience, I don't have 20K, it seems it's time to change jobs
被审稿人吐槽没有novelty!深度学习方向怎么找创新点?