C#将字符串转换为ASCII字节
我有一个字符串:
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;
我的编码有什么问题吗?
这段代码
class Program { static void Main(string[] args) { byte[] LogoDataBy = ASCIIEncoding.ASCII.GetBytes("ABC000"); } }
产生预期产量
在读取ASCII字节之前,请仔细检查代码和字符串的值。
扔掉:
Encoding.ASCII.GetBytes("ABC0000").Dump();
进入LinqPAD给出(十进制)的输出:
Byte [](7件物品)
65
66
67
48
48
48
48
所以我不确定你是怎么得到0x00的……
class CustomAscii { private static Dictionary dictionary; static CustomAscii() { byte numcounter = 0x30; byte charcounter = 0x41; byte ucharcounter = 0x61; string numbers = "0123456789"; string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; string uchars = "abcdefghijklmnopqrstuvwxyz"; dictionary = new Dictionary(); 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()会返回错误的值。