Difference between revisions of "Lua:wordToByteTable"

From Cheat Engine
Jump to navigation Jump to search
m
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
 
[[Category:Lua]]
 
[[Category:Lua]]
'''function''' wordToByteTable(''Number'') ''':''' table
+
'''function''' wordToByteTable(''Number'') ''':''' Table
 
 
Converts a WORD (2 bytes) to a byte table, interpreting it as an integer.
 
 
 
 
 
Note: If the number is a float only the integer no greater than or no less than the given value will be used.
 
 
 
Same as value from 'math.floor'.
 
 
 
  i.e.: 8.1 : 8, 8.9 : 8, -8.1 : -8, -8.9 : -8
 
 
 
 
 
Note: If the number is larger than a WORD (2 bytes) only the lower portion of the number will be used.
 
 
 
  i.e.: 0xFFFF00 : 0xFF00
 
          2 1 0      1 0
 
  
 +
Converts a 16-bit word (integer) to a table of bytes.
  
 
===Function Parameters===
 
===Function Parameters===
{|width="85%" cellpadding="10%" cellpadding="5%" cellspacing="0" border="0"
+
{|width="85%" cellpadding="10%" cellspacing="0" border="0"
 
!align="left"|Parameter
 
!align="left"|Parameter
 
!align="left"|Type
 
!align="left"|Type
Line 25: Line 11:
 
|-
 
|-
 
|Number
 
|Number
|number
+
|Integer
|The number to convert to a byte table
+
|The 16-bit word to convert.
 
|}
 
|}
  
 +
===Returns===
 +
Table — A table containing the bytes representing the word.
  
== Examples ==
+
===Explanation===
 
 
Code:
 
  local bt = wordToByteTable(0xFFFF)
 
                            --1 0
 
  writeBytes('00123ABC', bt)
 
 
 
 
 
Code:
 
  local bt = wordToByteTable(10)
 
  for i, v in ipairs(bt) do
 
    print(i - 1, string.format('%02X', v))
 
  end
 
 
 
Output:
 
  0 0A
 
  1 00
 
 
 
  
Code:
+
The "ToByteTable" functions convert a value (such as an integer or floating-point number) into a table of bytes that represent how the value is stored in memory.
  local bt = wordToByteTable(10.9)
 
  for i, v in ipairs(bt) do
 
    print(i - 1, string.format('%02X', v))
 
  end
 
  
Output:
+
For example, if you use <code>wordToByteTable(1337)</code>:
  0 0A
 
  1 00
 
  
 +
- The decimal number <code>1337</code> is <code>0x0539</code> in hexadecimal.
 +
- Computers typically use little-endian order, meaning the least significant byte comes first.
 +
- So, <code>0x0539</code> is split into two bytes: <code>0x39</code> (57 in decimal) and <code>0x05</code> (5 in decimal).
 +
- The resulting byte table is <code>{0x39, 0x05}</code> or <code>{57, 5}</code>.
  
Code:
+
This means:
  local bt = wordToByteTable(0xFFFF00)
+
- <code>bytes[1] = 0x39</code> (the low byte)
                            --2 1 0
+
- <code>bytes[2] = 0x05</code> (the high byte)
  for i, v in ipairs(bt) do
 
    print(i - 1, string.format('%02X', v))
 
  end
 
  
Output:
+
This process applies to all "ToByteTable" functions:
  0 00
+
They break down the value into its raw bytes, ordered from least significant to most significant (little-endian).
  1 FF
 
  
 +
===Examples===
 +
<pre>
 +
local bytes = wordToByteTable(0x1234)
 +
for i, b in ipairs(bytes) do
 +
  print(string.format("Byte %d: %02X", i, b))
 +
end
 +
-- Output: Byte 1: 34, Byte 2: 12 (little-endian order)
 +
</pre>
  
 
{{LuaSeeAlso}}
 
{{LuaSeeAlso}}

Latest revision as of 17:33, 11 July 2025

function wordToByteTable(Number) : Table

Converts a 16-bit word (integer) to a table of bytes.

Function Parameters[edit]

Parameter Type Description
Number Integer The 16-bit word to convert.

Returns[edit]

Table — A table containing the bytes representing the word.

Explanation[edit]

The "ToByteTable" functions convert a value (such as an integer or floating-point number) into a table of bytes that represent how the value is stored in memory.

For example, if you use wordToByteTable(1337):

- The decimal number 1337 is 0x0539 in hexadecimal. - Computers typically use little-endian order, meaning the least significant byte comes first. - So, 0x0539 is split into two bytes: 0x39 (57 in decimal) and 0x05 (5 in decimal). - The resulting byte table is {0x39, 0x05} or {57, 5}.

This means: - bytes[1] = 0x39 (the low byte) - bytes[2] = 0x05 (the high byte)

This process applies to all "ToByteTable" functions: They break down the value into its raw bytes, ordered from least significant to most significant (little-endian).

Examples[edit]

local bytes = wordToByteTable(0x1234)
for i, b in ipairs(bytes) do
  print(string.format("Byte %d: %02X", i, b))
end
-- Output: Byte 1: 34, Byte 2: 12 (little-endian order)

See also[edit]

Related Functions[edit]