Blank Dank
Blank Dank

Reputation: 9

How can I print lua Bytecode without it being converted to its readable equivalent?

How can I print bytecode (for example \122, equivalent to lower-case "z") without it converting to its readable equivalent?

Here is my code:

symbols = {
        forwardslash = "\47",
        backslash = "\92",
        andsymbol = "\38",
        starthing = "\42",
        hashtag = "\35",
        atsymbol = "\64",
        dot = "\46",
        comma = "\44",
        exclamation = "\33",
        questionmark = "\63",
        speechmark = "\34",
        invertedcomma = "\39",
        percent = "\37",
        dash = "\45",
        underscore = "\95",
        bracket1 = "\40",
        bracket2 = "\41",
        squarebracket1 = "\91",
        squarebracket2 = "\93",
        squiglybracket1 = "\123",
        squiglybracket2 = "\125"
};
print(symbols.bracket1)

Code image: https://i.sstatic.net/NDRHZ.jpg

Upvotes: 0

Views: 476

Answers (2)

Aki
Aki

Reputation: 2928

Use string.byte:

print(string.byte(symbols.bracket1)) -- prints: 40

For future reference I encourage you to first take a look at the String Manipulation and other chapters of Lua Reference Manual. It's a good piece of documentation, really.

Conversion from "\40" to "(" is due to how escape sequences are handled in Lua. Refer to Lexical Conventions or see batch example below:

print("(") -- prints: (
print("\40") -- prints: (
print(string.char(40)) -- prints: (

print(40) -- prints: 40
print(string.byte("(")) -- prints: 40
print(string.byte("\40")) -- prints: 40
print(string.format("%d", 40)) -- prints: 40

print("\\40") -- prints: \40
print(string.format("\\%d", 40)) -- prints: \40
print(string.format("\\%d", string.byte("("))) -- prints: \40
print(string.format("\\%d", string.byte("\40"))) -- prints: \40

Upvotes: 1

koyaanisqatsi
koyaanisqatsi

Reputation: 2793

Combining string.byte() with string.format() for the backslash...

for k,v in pairs(symbols)
 do
  print(k..'='..string.format("\"\\%s\"",string.byte(v)))
 end

Puts out...

hashtag="\35"
squiglybracket2="\125"
speechmark="\34"
forwardslash="\47"
squarebracket2="\93"
andsymbol="\38"
dash="\45"
squiglybracket1="\123"
exclamation="\33"
bracket2="\41"
backslash="\92"
starthing="\42"
dot="\46"
squarebracket1="\91"
atsymbol="\64"
comma="\44"
invertedcomma="\39"
bracket1="\40"
percent="\37"
underscore="\95"
questionmark="\63"

Upvotes: 0

Related Questions