3

SIM900 GPRS の SMS でこのメッセージを受け取ります。

07916698019021F00410D05479BDDC7CBBCB790008217002123430826A0049006E0063006F00720072006500630074002000700061007300730077006F00720064002E00200050006C050610306500065060740507202079060750702007001070730700F0700402001060010600E02

別のサンプル メッセージ:

07916698019021F00410D05479BDDC7CBBCB790008217002025501826A0049006E0063006F00720072006500630074002000700061007300730077006F00720064002E00200050006C06001073050200506E04065070200906F07072020700607307007060020600006007060090600E

このメッセージは Unicode UCS-2 形式で、タイ語だと思います。ただし、それを読み取り可能なものに変換することはできません。私はこの非常に便利なコードを見つけました:

//Here's how you'd go from a string to stuff like
// U+0053 U+0063 U+006f
string scott = "ฉ";
foreach (char s in scott) {
  Console.Write("{0:x4} ", (int)s);
}
//Here's how converted a string (assuming it starts with U+)
// containing the representation of a char
// back to a char
// Is there a built in, or cleaner way? Would this work in Chinese?
string maybeC = "U+0063";
int p = int.Parse(maybeC.Substring(2),
 System.Globalization.NumberStyles.HexNumber);
Console.WriteLine((char)p);

前もって感謝します。

4

2 に答える 2

4

ウィキペディアを読んで、この記事を見つけました。UCS-2 は UTF-16 に非常に似ていると書かれています。そう:

string s = "07916698019021F00410D05479BDDC7CBBCB790008217002025501826A0049006E0063006F00720072006500630074002000700061007300730077006F00720064002E00200050006C06001073050200506E04065070200906F07072020700607307007060020600006007060090600E";
List<byte> bytes = new List<byte>();
for (int i = 0; i < s.Length; i+=2)
{
    bytes.Add(byte.Parse(s.Substring(i, 2), NumberStyles.HexNumber));
}

var str = Encoding.Unicode.GetString(bytes.ToArray());

出力:鄇顦送င哐뵹糜쮻y℈ɰ唂舁jIncorrect password. P٬ကճ湐؄灐ठ牰܂怀ݳ瀀ɠ怀؇退

于 2012-07-20T16:44:15.427 に答える
0

組み込みSystem.Text.Encodingクラスを使用してみてください。

using System.Text;
// ..
var bytes = Encoding.GetEncoding("ucs-2").GetBytes("SomeString");

編集:UCS-2/UTF-16エンコーディングから。を使用して変換できますGetString(byte)

于 2012-07-20T16:26:03.297 に答える