整数がある場合は、文字列をエンコードまたはデコードできます(A = 1、B = 2などの単純なスキームで十分です)。定数文字列を比較するか、intを比較できる必要があるだけです。したがって、根本的な問題はないようです。
あなたは数字を扱い、次のようなことを書きます
if (n == 1) print "A"
if (n == 2) print "B"
...
いくつかの実際的な問題がある可能性があります。文字列の場合は、文字が含まれているのではなく、非常に大きな数に相当します。ここで必要なのは、無制限の精度の数値、固定サイズの数値のある種の配列、またはその他の大きなデータ構造にアクセスできるようにすることです。数字の配列は、文字列ができることをあなたに代わって行います。ただし、言語がチューリング完全である場合は、メモリの大きなチャンクに簡単にアクセスする方法が必要です。
32ビットテープに制限されたチューリング完全言語(または32ビットの異なるメモリスペースごとに新しい名前を付ける必要がある場合)は残念ですが、そのような制限のあるクワインを書くことができるかどうかはわかりません。ちなみに、配列や同様の構造がない場合、言語がチューリング完全であることをどのように証明したかを知ることは興味深いでしょう。私が通常使用する一般的な方法は、私の言語を使用してチューリングマシンを実装することです。しかし、これを行うには、バンドをシミュレートするためのある種のアレイが必要です。
この種のエンコーディングは、基本的にゲーデルが不完全の定理で行ったことであり、論理式を整数としてエンコードする方法を見つけて、それを推論します。
構文の要素をさらに指定すると、それを実行することもできます(関数がなく、gotoのみの場合、それも問題になりますが、シミュレートすることもできます)。基本的な問題は、エンコードされたソースコードを「圧縮」する方法を見つけなければならないことです。長い文字列定数を使用できる場合は、おそらく役立つでしょう。