2

mms-gateway から MMS を取得し、イメージをディスクに保存するプロジェクトに取り組んでいます。

これには、受信した base64 でエンコードされた文字列を使用し、それを zip として Web サーバーに保存することが含まれます。次に、この zip が開かれ、画像が取得されます。

なんとかzipファイルとして保存できましたが、壊れていて開くことができません。

ゲートウェイのドキュメントはかなりまばらで、信頼できるのは PHP の例だけです。PHP関数stripcslashes(inputvalue)を除いて、ほとんどを「翻訳」する方法を理解したと思います。C#で同じことを行う方法について誰かが光を当てることができますか?

どんな助けにも感謝します!

4

1 に答える 1

0

stripcslashes() は、長い文字列内の "\x" タイプの要素を検索します (ここで、'x' は任意の文字、または複数の文字である可能性があります)。「x」が意味のあるものとして認識されない場合は、「\」を削除するだけですが、それが有効な C スタイルのエスケープ シーケンスとして認識される場合 (つまり、「\n」は改行、「\t」はタブなど)。 )、私が理解しているように、認識された文字が代わりに挿入されます: \t は、文字列内のタブ文字 (0x09 だと思います) に置き換えられます。

同様の機能を自分で構築せずに.netフレームワークに同じことをさせる簡単な方法を知りません。これは明らかにそれほど難しいことではありませんが、処理するエスケープ シーケンスを知る必要があります。

処理が必要な入力内の唯一のものは、特定の 1 つまたは 2 つのシーケンス (たとえば、タブ文字) であることがたまたまわかっている場合 (または base64 テキストを調べてわかった場合)、それは非常に簡単になり、次のスニペットは使用を示していますString.Replace() の:

string input = @"Some\thing";    // '@' means string stored without processing '\t'
Console.WriteLine(input);
string output = input.Replace(@"\t", "\t");
Console.WriteLine(output);

もちろん、本当に単純にすべてのスラッシュを削除したい場合は、次のようにします。

string output = input.Replace(@"\", "");
于 2010-08-25T15:11:44.907 に答える