Reputation: 9
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
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
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