encoding – Lua,处理非ascii字节流,字节顺序改变

encoding – Lua,处理非ascii字节流,字节顺序改变,第1张

概述需要编码&解码字节流(可能包含非ascii字符),从/进入uint16,uint32,uint64(它们的典型C/C++含义),处理字节顺序.什么是有效的&希望跨平台的方式在Lua做这样的事情? 我的目标arch是64位x86_64,但是想保持它的可移植性(如果它在性能方面没有花费我的成本). 例如 解码(比如当前在Lua字符串中) – 0x00,0x1d,0xff,0x23,0x44,0x32( 需要编码&解码字节流(可能包含非ascii字符),从/进入uint16,uint32,uint64(它们的典型C/C++含义),处理字节顺序.什么是有效的&希望跨平台的方式在Lua做这样的事情?

我的目标arch是64位x86_64,但是想保持它的可移植性(如果它在性能方面没有花费我的成本).

例如

解码(比如当前在Lua字符串中) –
0x00,0x1d,0xff,0x23,0x44,0x32(小端)
作为 –
uint16:(0x1d00)= 7424
uint32:(0x324423ff)= 843326463

如果有人可以用一个例子解释,那将会很棒.

解决方法 看一下 struct和 lpack图书馆.

在这个例子中,我使用struct.unpack将Lua字符串解码为带有强制little-endian编码的两个整数:

require 'struct'-- convert character codes to a Lua string - this may come from your sourcelocal str = string.char(0x00,0x32)-- format string: < = little endian,In = unsigned int (n bytes)local u16,u32 = struct.unpack('<I2I4',str)print(u16,u32) --> 7424    843326463
总结

以上是内存溢出为你收集整理的encoding – Lua,处理非ascii字节流,字节顺序改变全部内容,希望文章能够帮你解决encoding – Lua,处理非ascii字节流,字节顺序改变所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1228237.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存