Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbinary.lua
More file actions
Latest commit
79 lines (69 loc) · 2.1 KB
/
Copy pathbinary.lua
File metadata and controls
79 lines (69 loc) · 2.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
localbit32=require("bit32")
localbinary= {}
---Converts an integer into a little endian byte array or a given size, defaults to 4 bytes if ommited
---@paramintnumber
---@paramoptionallength number
---@returntable
functionbinary.int2bytes(int, length)
length=lengthor4
localresult= {}
fori=1, lengthdo
result[i] =bit32.band(bit32.rshift(int, ((i-1) *8)), 0xFF)
end
returnresult
end
---Converts a little endian byte array into a binary string
---@parambytestable
---@returnstring
functionbinary.bytes2string(bytes)
returnstring.char(table.unpack(bytes))
end
---Converts an integer into a little endian binary string of a given size, defaults to 4 bytes if ommited
---@paramintnumber
---@paramoptionallength number
---@returnstring
functionbinary.int2binString(int, length)
returnbinary.bytes2string(binary.int2bytes(int, length))
end
---Converts a binary string into a byte array
---@paramstrstring
---@returntable
functionbinary.binString2bytes(str)
localresult= {}
fori=1, string.len(str) do
result[i] =string.byte(str, i)
end
returnresult
end
---Converts a byte array of a little endian integer into an integer
---@parambytestable
---@returnnumber
functionbinary.bytes2int(bytes)
localresult=0
fori, vinipairs(bytes) do
result=result+bit32.lshift(v, (i-1) *8)
end
returnresult
end
---Converts a binary string of a little endian integer into a integer
---@parambytestable
---@returnnumber
functionbinary.string2int(str)
returnbinary.bytes2int(binary.string2bytes(str))
end
---Converts a binary string of a little endian integer into a integer
---@parambytestable
---@returnnumber
functionbinary.binString2int(str)
returnbinary.bytes2int(binary.string2bytes(str))
end
localfunctiondebug()
localserial=require("serialization")
print(serial.serialize(binary.int2bytes(384)))
localtest=binary.int2binString(384)
print(test)
test=binary.binString2bytes(test)
print(serial.serialize(test))
print(binary.bytes2int(test))
end
returnbinary