需要编码解码字节流(可能包含非ascii字符),从/进入uint16,uint32,uint64(它们的典型C/C++含义),处理字节顺序.什么是有效的希望跨平台的方式在Lua做这样的事情? 我的目标arch是64位x86_64,但是想
我的目标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 source local str = string.char(0x00, 0x1d, 0xff, 0x23, 0x44, 0x32) -- format string: < = little endian, In = unsigned int (n bytes) local u16, u32 = struct.unpack('<I2I4', str) print(u16, u32) --> 7424 843326463