0

私はこの文字列を取得しています

これは、文字列から変換することを期待しているものです。

  88020000 long in little endian => 648 
  30000000 long in little endian => 48 
  C6020000 long in little endian => 710
 33000000 long in little endian => 51

左側は文字列から取得している値で、右側は期待している値です。右側の値が間違っている可能性がありますが、左側から右側の値を取得する方法はありますか??

私はここのようにいくつかのスレッドを通過しました

int をリトルエンディアンのバイト配列に変換する方法は?

C# 4 バイトからのビッグエンディアン ulong

私はまったく異なる機能を試しましたが、私が期待しているものに近い、またはそれに近い価値を私に与えるものは何もありませんでした。

更新:以下のようにテキストファイルを読んでいます。ほとんどのデータは最新のテキスト形式ですが、突然大量の GRAPHICS 情報を取得するようになり、その処理方法がわかりません。

    RECORD=28 

cVisible=1
dwUser=0
nUID=23
c_status=1
c_data_validated=255
c_harmonic=0
c_dlg_verified=0
c_lock_sizing=0
l_last_dlg_updated=0
s_comment=
s_hlinks=
dwColor=33554432
memUsr0=
memUsr1=
memUsr2=
memUsr3=
swg_bUser=0
swg_dConnKVA=L0
swg_dDemdKVA=L0
swg_dCodeKVA=L0
swg_dDsgnKVA=L0
swg_dConnFLA=L0
swg_dDemdFLA=L0
swg_dCodeFLA=L0
swg_dDsgnFLA=L0
swg_dDiversity=L4607182418800017408
cStandard=0
guidDB={901CB951-AC37-49AD-8ED6-3753E3B86757}
l_user_selc_rating=0
r_user_selc_SCkA=
a_conn1=21
a_conn2=11
a_conn3=7
l_ct_ratio_1=x44960000
l_ct_ratio_2=x40a00000
l_set_ct_ratio_1=
l_set_ct_ratio_2=

c_ct_conn=0

   ENDREC
 GRAPHICS0=8802000030000000C602000033000000000000800000008000000000000000001800000000000
 EOF
4

2 に答える 2

2

あなたは本当にそれが文字列であることを文字通り意味しますか?見た目は次のとおりです。32ビットのワードがたくさんあり、それぞれが8桁の16進数で表されています。それぞれがリトルエンディアンの順序で、下位バイトが最初に表示されます。それらのそれぞれを整数として解釈する必要があります。したがって、たとえば、88020000は88 02 00 00、つまり0x00000288です。

文字列、ある種の数値型の配列、または何を持っているのかを正確に明確にできれば、さらにアドバイスするのが簡単になります。

于 2012-07-10T22:18:01.810 に答える
2

入力文字列を解析する方法に応じて、次のようにすることができます。

string input = "8802000030000000C6020000330000000000008000000080000000000000000018000000";

for (int i = 0; i < input.Length ; i += 8)
{
    string subInput = input.Substring(i, 8);
    byte[] bytes = new byte[4];
    for (int j = 0; j < 4; ++j)
    {
        string toParse = subInput.Substring(j * 2, 2);
        bytes[j] = byte.Parse(toParse, NumberStyles.HexNumber);
    }

    uint num = BitConverter.ToUInt32(bytes, 0);
    Console.WriteLine(subInput + " --> " + num);
}

88020000 --> 648
30000000 --> 48
C6020000 --> 710
33000000 --> 51
00000080 --> 2147483648
00000080 --> 2147483648
00000000 --> 0
00000000 --> 0
18000000 --> 24
于 2012-07-10T22:30:03.280 に答える