Difference between revisions of "Lua:wideStringToByteTable"

From Cheat Engine
Jump to navigation Jump to search
m
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
[[Category:Lua]]
 
[[Category:Lua]]
'''function''' wideStringToByteTable(''String'') ''':''' table
+
'''function''' wideStringToByteTable(''String'') ''':''' Table
  
Converts a string is encoded using a widechar formatting to a byte table.
+
Converts a string to a wide string (UTF-16/Unicode) and then to a table of bytes.
  
 
+
===Function Parameters===
=== Function Parameters ===
+
{|width="85%" cellpadding="10%" cellspacing="0" border="0"
{|width="85%" cellpadding="10%" cellpadding="5%" cellspacing="0" border="0"
 
 
!align="left"|Parameter
 
!align="left"|Parameter
 
!align="left"|Type
 
!align="left"|Type
Line 12: Line 11:
 
|-
 
|-
 
|String
 
|String
|string
+
|String
|The widechar formated string to convert to a byte table
+
|The string to convert to a wide string and then to a byte table.
 
|}
 
|}
  
 +
===Returns===
 +
Table — A table containing the bytes representing the wide string (UTF-16/Unicode).
 +
 +
===Explanation===
 +
 +
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.
  
== Examples ==
+
For example, if you use <code>wordToByteTable(1337)</code>:
  local bt = wideStringToByteTable('player.weapons.rifle')
 
  bt[#bt + 1] = 0
 
  bt[#bt + 1] = 0
 
  writeBytes('00123ABC', bt)
 
  
 +
- 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 = wideStringToByteTable('test')
+
- <code>bytes[1] = 0x39</code> (the low byte)
  for i, v in ipairs(bt) do
+
- <code>bytes[2] = 0x05</code> (the high byte)
    print(i - 1, string.format('%02X', v))
 
  end
 
  
Output:
+
This process applies to all "ToByteTable" functions:
  0 74
+
They break down the value into its raw bytes, ordered from least significant to most significant (little-endian).
  1 00
 
  2 65
 
  3 00
 
  4 73
 
  5 00
 
  6 74
 
  7 00
 
  
 +
===Examples===
 +
<pre>
 +
local bytes = wideStringToByteTable("ABC")
 +
for i, b in ipairs(bytes) do
 +
  print(string.format("Byte %d: %02X", i, b))
 +
end
 +
-- Output: 6 bytes representing "A", "B", "C" as UTF-16LE (e.g., 41 00 42 00 43 00)
 +
</pre>
  
 
{{LuaSeeAlso}}
 
{{LuaSeeAlso}}
  
 
=== Related Functions ===
 
=== Related Functions ===
* [[readBytes]]
+
* [[ansiToUtf8]]
* [[readInteger]]
+
* [[utf8ToAnsi]]
* [[readQword]]
+
* [[translate]]
* [[readPointer]]
+
{{ReadWriteMemory}}
* [[readFloat]]
 
* [[readDouble]]
 
* [[readString]]
 
* [[writeBytes]]
 
* [[writeInteger]]
 
* [[writeQword]]
 
* [[writeFloat]]
 
* [[writeDouble]]
 
* [[writeString]]
 
* [[readBytesLocal]]
 
* [[readIntegerLocal]]
 
* [[readQwordLocal]]
 
* [[readPointerLocal]]
 
* [[readFloatLocal]]
 
* [[readDoubleLocal]]
 
* [[readStringLocal]]
 
* [[writeBytesLocal]]
 
* [[writeIntegerLocal]]
 
* [[writeQwordLocal]]
 
* [[writeFloatLocal]]
 
* [[writeDoubleLocal]]
 
* [[writeStringLocal]]
 
* [[wordToByteTable]]
 
* [[dwordToByteTable]]
 
* [[qwordToByteTable]]
 
* [[floatToByteTable]]
 
* [[doubleToByteTable]]
 
* [[stringToByteTable]]
 
* [[byteTableToWord]]
 
* [[byteTableToDword]]
 
* [[byteTableToQword]]
 
* [[byteTableToFloat]]
 
* [[byteTableToDouble]]
 
* [[byteTableToString]]
 
* [[byteTableToWideString]]
 

Latest revision as of 17:35, 11 July 2025

function wideStringToByteTable(String) : Table

Converts a string to a wide string (UTF-16/Unicode) and then to a table of bytes.

Function Parameters[edit]

Parameter Type Description
String String The string to convert to a wide string and then to a byte table.

Returns[edit]

Table — A table containing the bytes representing the wide string (UTF-16/Unicode).

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 = wideStringToByteTable("ABC")
for i, b in ipairs(bytes) do
  print(string.format("Byte %d: %02X", i, b))
end
-- Output: 6 bytes representing "A", "B", "C" as UTF-16LE (e.g., 41 00 42 00 43 00)

See also[edit]

Related Functions[edit]