2

現在、.NET JSONエンコーダーをNETMFに変換しようとしていますが、Convert.ToString()NETMFにはそのようなものがないため、問題が発生しました。

エンコーダの元の行は次のようになります。

Convert.ToString(codepoint, 16);

そして、そのドキュメントを見た後、最初のパラメータとしてintを、2番目のパラメータとしてbaseを提供することにより、int 2、8、10、または16にConvert.ToString(Int32, Int32)変換するためのものであると述べています。int32

これを行う方法の低レベルのコードは何ですか、またはこれを行うにはどうすればよいですか?

コードからわかるように、私はからへの変換のみが必要Int32ですInt16

編集

ああ、エンコーダーも次のことを実行したいと考えています。

PadLeft(4, '0');

文字列では、これは文字列の先頭に4 '0' + '0' + '0' + '0'を追加するだけですか?

4

2 に答える 2

4

32 ビット整数値を16 進数で値を示す文字列に変更する場合:

string hex = intValue.ToString("x");

バリエーションについては、Stack Overflow の質問Convert a number into the hex value in .NETを参照してください。

免責事項: この関数がNETMFに存在するかどうかはわかりませんが、非常に基本的であるため、そうすべきだと思います。

于 2012-06-18T21:39:27.493 に答える
2

整数を 16 進数 (基数 16) に変換するサンプル コードを次に示します。

int num = 48764;   // assign your number

// Generate hexadecimal number in reverse.
var sb = new StringBuilder();
do
{
    sb.Append(hexChars[num & 15]);
    num >>= 4;
} 
while (num > 0);

// Pad with leading 0s for a minimum length of 4 characters.
while (sb.Length < 4)
    sb.Append('0');

// Reverse string and get result.
char[] chars = new char[sb.Length];
sb.CopyTo(0, chars, 0, sb.Length);
Array.Reverse(chars);
string result = new string(chars);

PadLeft(4, '0')文字列の先頭に 0 を追加して、最小長が 4 文字になるようにします。

値のhexCharsルックアップは、文字列として簡単に定義できます。

internal static readonly string hexChars = "0123456789ABCDEF";

編集:次のものに置き換えStringBuilderますList<char>

// Generate hexadecimal number in reverse.
List<char> builder = new List<char>();
do
{
    builder.Add(hexChars[num & 15]);
    num >>= 4;
}
while (num > 0);

// Pad with leading 0s for a minimum length of 4 characters.
while (builder.Count < 4)
    builder.Add('0');

// Reverse string and get result.
char[] chars = new char[builder.Count];
for (int i = 0; i < builder.Count; ++i)
    chars[i] = builder[builder.Count - i - 1];
string result = new string(chars);

:この変換の説明については、Expert .NET Micro Frameworkの「16 進数出力」セクションを参照してください。

于 2012-06-18T21:40:18.980 に答える