Как я могу напечатать lua байт-код без преобразования в его читаемый эквивалент? - PullRequest
0 голосов
/ 03 августа 2020

Как я могу напечатать байт-код (например, \122, эквивалент строчной буквы «z») без его преобразования в его читаемый эквивалент?

Вот мой код:

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)

Изображение кода: https://imgur.com/Rtwdzfc

Ответы [ 2 ]

1 голос
/ 03 августа 2020

Используйте string.byte:

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

Для справки в будущем я рекомендую вам сначала взглянуть на String Manipulation и другие главы Lua Справочное руководство . Это действительно хорошая документация.

Преобразование из "\40" в "(" происходит из-за того, как escape-последовательности обрабатываются в Lua. См. Лексические обозначения или пример партии ниже:

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

0 голосов
/ 03 августа 2020

Сочетание string.byte() с string.format() для бэксла sh ...

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

Выводит ...

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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...