2012-01-27 14 views
2

私はLuaで文字列内の16進数の印刷不可能な文字00hを探しています。私はエスケープ文字で試してみました。その結果、私が始めたのと同じ場所が得られました(それは印刷可能な文字です)。私はキャラクターのクラスで周りを見回しましたが、それは何にもなりませんでした。私のアプローチは次のようになります。Lua:文字列の16進値を見つける

location = string.find(variable,"\00",startlocation) 

私はまた、このようにそれを試してみましたが、運:

location = string.find(variable, string.char(00),startlocation) 

は、どのように私はLuaのでは、この非印字可能なパターンを見つけることができませんか?

+0

あなたは '単一ゼロで'場所=のstring.Find(変数、 "\ 0"、startlocation)をしてみてくださいましたか? – dasblinkenlight

+0

1つ、2つまたは3つのゼロは同じものです。 – lhf

+3

パターンでゼロ文字に '%z'を使用しないでください(少なくとも5.1で)。 – jpjacobs

答えて

2

それは私のために正常に動作します:

> return string.find("one\0two\0,three","\0,") 
8 9 
> return string.find("one\0two\0,three","\0") 
4 4 
> return string.find("one\0two\0,three","\00") 
4 4 
> return string.find("one\0two\0,three","\00",6) 
8 8 
+0

ええと、私のコードではエラーでなければなりません。私は他の変数をチェックする必要があります。 – Zerobinary99

+0

@ Zerobinary99、 'string.char(00)'は長さ1の文字列を返します。文字列のバイトは0で、これはまさに\ "" \ "です。 'print(string.char(00)==" \ 0 ")'を試してください。 – lhf

+0

私はそれを自分でテストしました;)したがって、私の最初のメッセージの編集。あなたがそれを見た前に私の間違った仮定を修正できると思ったが、あなたはもっと速かった;) – Zerobinary99

関連する問題