引用サーバーに要求を送信する必要があります。それぞれのリクエストには固有のリクエスト番号(unsigned int)が必要です。そのため、添付されたリクエスト番号でクォートが返されたときに、それらのクォートがどのシンボルに属するかを知ることができます。このタイプのケースにエンコードする特別な文字はありますか?例えば。 "A"は13、 "B"は14です。したがって、 "BA"シンボルのために私のリクエスト番号は1413になります。文字列を符号なし整数に変換する
答えて
文字は常に大文字ですか?もしそうなら、このような単純な何かがあなたが説明してきた方法でそれを変換します:uintに直接文字をマッピングするよう
var symbol = "BA";
var encoded = symbol.Aggregate(0u, (acc, c) => (uint)(acc * 100 + c - 'A' + 13));
、あなたはシンボルが6文字以下であることを保証することができますか?そうでない場合は、可能なuint値よりも多くのシンボル値があります。
いずれにしても、要求番号のポイントは要求に関する情報をエンコードすることではありません。むしろ、リクエスト番号(キー)の辞書とレスポンス(値として)の処理に関する情報を保持する必要があります。あなたのアプローチでは、同じシンボルに対して複数のリクエストがある場合、同じリクエスト番号を共有する異なるリクエストになります。あなたはシンボルへの応答をマップする場合
たとえば、あなたがこれを行うことができます:
private Dictionary<uint, string> _requests = new Dictionary<int, string>();
private uint _requestNumber = 0;
void SendRequest(string symbol)
{
uint currentRequestNumber = _requestNumber++;
_requests[currentRequestNumber] = symbol;
//... send request using currentRequestNumber
}
void ReceiveResponse(Response response)
{
string symbol = _requests[response.RequestNumber];
_requests.Remove(response.RequestNumber);
//...do something with the response...
}
これは、スレッドセーフではありませんが。このアイデアを説明するための単なるスケッチです。
尋ねられた質問に答えるには、可能なシンボル値の範囲が十分に小さい場合は、各文字が2桁の数字にマッピングされている質問のアウトラインを取って、 。私はこのアプローチを使用する既存のシステムを認識していません。
このアプローチでは、シンボルに対応できない多くのuint値が無駄になります。 A
は10であり、そしてZ
は35であり、そして\
が36である場合、例えば、これらの範囲が無駄になる:0別のオプションは、シンボルを解釈するであろう
等、1037から1109まで、37から1009、9 (
'Z'
から
'A'
プラス
'\'
として有効桁)ベース27数として、あなたはいくつかのサンプルコードを希望の場合は10
をベースに、それを変換するには、可能なシンボル値の範囲についてのいくつかのより多くの情報を記入してください。
あなたはあなたのためにこの変換を行う簡単な関数を書くことができ、A = 13、B = 14、...、Z = 38
を仮定します。次のようなものがあります。
uint output = 0;
foreach (char c in inpStr) {
output = output * 100 + (13 + c - 'A');
}
return output;
ここで、inpStr = "BA"です。
あなたのシンボルは常に大文字であれば、あなたはこのようなマッピングのものを作成することができます
uint result = 0;
uint power = 1;
for (int i=0; i < input.Length; i++)
{
uint digitValue = power * (input[i] - 'A');
result += digitValue;
power *= 26;
}
これが効果的にあなたのシンボルは、ベース26数Z」を通して(数字である「A」であると考えて')、それを基数10に変換します。「1」の数字は左に一番遠い(標準数字の逆ですが、内部的に一貫しているため無関係です)。数字を1桁左に扱う場合は、input[i]
をに変更するだけで済みます。
更新 は(任意ですが、簡単に)単に「/」だけ「Z」の上に26から27と順に、「ベース」を変換し、「/」記号も許可されていることを、あなたの明確化を考えます。 input [i]が '/'であるかどうかをテストし、その結果のパワー* 27を割り当てる必要があります。
- 1. 符号なし文字配列を整数に変換する
- 2. 符号付き文字配列を符号なし整数に変換できますか?
- 3. 算術符号を含む文字列を整数値に変換する
- 4. Qt負の16進文字列を符号付き整数に変換する
- 5. JNI:符号なし整数をjintに変換する
- 6. Pythonバイトを「符号なし8ビット整数」に変換する
- 7. MFC CStringを符号なし整数に変換する
- 8. 符号なし整数から符号付き整数への変換または逆の変換
- 9. 符号付き32ビット整数を符号なし32ビット整数に変換する方法は?
- 10. 符号なし文字配列を文字列に変換するためのJavaユーティリティ関数の作成
- 11. 符号なし整数をCのバイト配列に変換する
- 12. 文字列を整数に変換
- 13. 16ビット16進数の文字列をJavaで符号付き整数に変換する
- 14. 16進数の文字列をRubyで符号付き整数に変換する
- 15. iPhone - 文字列を符号なしの文字にキャストする
- 16. 数字の文字配列を整数に変換する
- 17. 整数の文字列表現を基数16の符号なし整数として返す方法
- 18. 文字列を整数に変換してテストするには?
- 19. Javascript:符号付き整数をjavacript値に変換する
- 20. 整数を文字に変換する
- 21. 文字列配列を整数に変換する
- 22. C++の符号なし整数と符号なし整数の違い
- 23. 整数を文字列に変換して各文字を使用する
- 24. Jackson JSONは整数を文字列に変換します
- 25. 文字列を整数に変換するには?
- 26. PHPで文字列を整数に変換するには?
- 27. 変換文字列は、整数に文字列内の数字を分離し、変数
- 28. 文字列を整数に変換する
- 29. oracleで文字列を整数に変換する
- 30. 時間文字列を整数に変換する
引用符はありますか? (これは、シンボルの範囲と引用文字列の最大長を定義しているためです)。 –
はい、在庫と先物ですので、文字とは別にもう1つの記号 "/"があります。 – Vitaly
シンボルの最大長はどれくらいですか? – phoog