Lua:bXor

From Cheat Engine
Revision as of 14:46, 3 December 2025 by Leunsel (talk | contribs) (Major overhaul of the post.)
Jump to navigation Jump to search

function bXor(int1, int2) : Integer

Performs a bitwise XOR (exclusive OR) operation between two integer values. This function behaves the same as Lua's bitwise XOR operator (~) in Cheat Engine. It is used when toggling bits, detecting bit differences, or implementing specific bit-logic operations.

Function Parameters

Parameter Type Description
int1 integer The first integer value used in the XOR operation.
int2 integer The second integer value used in the XOR operation.

Returns

An integer representing the result of the bitwise XOR operation.

Description

The XOR operation compares each bit of the two integers and sets the result bit to 1 only if the bits differ. If both bits are the same (both 0 or both 1), the result bit is 0.

Binary example:

0011   (3)
0101   (5)
----
0110   (6)

Usage Examples

Simple bitwise XOR:

print( bXor(3, 5) )   -- 6

Using Lua's XOR operator (equivalent):

print( 3 ~ 5 )        -- 6

Toggling flags with XOR:

local FLAG = 0x04
local value = 0x04

-- Toggle bit 2
toggled = bXor(value, FLAG)
print(string.format("0x%X", toggled))

Detecting bit differences:

local a = 0x0F
local b = 0x33
local diff = bXor(a, b)
print(string.format("Different bits: %X", diff))

Behavior

  • Returns an integer.
  • Only works on numeric values.
  • Equivalent to Lua's native XOR operator (~) in Cheat Engine.
  • Useful for flag toggling and detecting changed bits.

Advanced Examples

Clearing bits using XOR (when bit is known to be set):

local value = 0x0A   -- 1010
local clearBit = 0x02 -- bit 1
value = bXor(value, clearBit)
print(string.format("0x%X", value))

XOR-based encryption/decryption (simple):

local key = 0x55
local original = 0x22

local encrypted = bXor(original, key)
local decrypted = bXor(encrypted, key)

print(encrypted, decrypted)

See Also

  • bOr - Bitwise OR
  • bXor - Bitwise XOR
  • bAnd - Bitwise AND
  • bShl - Bitwise Shift Left
  • bShr - Bitwise Shift Right
  • bNot - Bitwise NOT