2

私は文字列を持っています:

LogoDataStr = "ABC0000"

ASCIIバイトに変換したいのですが、結果は次のようになります。

LogoDataBy[0] = 0x41;
LogoDataBy[1] = 0x42;
LogoDataBy[2] = 0x43;
LogoDataBy[3] = 0x30;
LogoDataBy[4] = 0x30;
LogoDataBy[5] = 0x30;
LogoDataBy[6] = 0x30;

私はこの方法を使ってみました:

byte[] LogoDataBy = ASCIIEncoding.ASCII.GetBytes(LogoDataStr);

しかし、私が得る結果はこれです:

LogoDataBy[0] = 0x41;
LogoDataBy[1] = 0x42;
LogoDataBy[2] = 0x43;
LogoDataBy[3] = 0x00;
LogoDataBy[4] = 0x00;
LogoDataBy[5] = 0x00;
LogoDataBy[6] = 0x00;

私のコーディングに何か問題はありますか?

4

3 に答える 3

16

このコード

class Program
{
    static void Main(string[] args)
    {
        byte[] LogoDataBy = ASCIIEncoding.ASCII.GetBytes("ABC000");
    }        
}

期待される出力を生成する

ここに画像の説明を入力

ASCII バイトを読み取る前に、コードと文字列の値を再確認してください。

于 2012-09-19T08:01:33.500 に答える
3

投げるだけ:

Encoding.ASCII.GetBytes("ABC0000").Dump();

LinqPAD に入力すると、(10 進数) の出力が得られます。

Byte[] (7項目)
65
66
67
48
48
48
48

どうやって 0x00 を取得しているのかわかりません...

于 2012-09-19T08:06:09.377 に答える
0
    class CustomAscii
    {
        private static Dictionary<char, byte> dictionary;

        static CustomAscii()
        {
            byte numcounter = 0x30;
            byte charcounter = 0x41;
            byte ucharcounter = 0x61;
            string numbers = "0123456789";
            string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
            string uchars = "abcdefghijklmnopqrstuvwxyz";
            dictionary = new Dictionary<char, byte>();
            foreach (char c in numbers)
            {
                dictionary.Add(c, numcounter++);
            }
            foreach (char c in chars)
            {
                dictionary.Add(c, charcounter++);
            }
            foreach (char c in uchars)
            {
                dictionary.Add(c, ucharcounter++);
            }
        }

        public static byte[] getCustomBytes(string t)
        {
            int iter = 0;
            byte[] b = new byte[t.Length];
            foreach (char c in t)
            {
                b[iter] = dictionary[c];
                //DEBUG: Console.WriteLine(b[iter++].ToString());
            }

            return b;
        }
    }

これは私がそれを行う方法です。JUST IF Encoding.ASCII.GetBytes() が間違った値を返すことがありました。

于 2012-09-19T08:23:48.573 に答える