日期:2014-05-18  浏览次数:20879 次

请教字符编码的问题
我现在有一个很大的十进制数,比如909391681,转换为十六进制是36 34 37 41,转换为ASCII码是647A。C#中如何写一个函数,传入十进制参数,返回ASCII码字符?求高手指点。。。感激

------解决方案--------------------
ASCII码有限制,并不是所有0-255之间的数字都能转换为ASCII码的。
------解决方案--------------------
很大的,这个超出界限如何办,那就数大数计算了,另说
如果符合范围,你不如把int读到byte[]中,你逐个字节的转为char即可,比如
C# code

            int i = 124344343;
            byte[] bs = new byte[sizeof(int)];
            bs = BitConverter.GetBytes(i);
            foreach (char c in bs)
            {
                MessageBox.Show(Convert.ToString(c));
            }

------解决方案--------------------

C# code

         public string test(int flag)
        {
            if (flag >= 0 && flag <= 255)
            {
                System.Text.ASCIIEncoding ascEn = new System.Text.ASCIIEncoding();
                byte[] arr = new byte[] { (byte)flag };
                string str = ascEn.GetString(arr);
                return (str);
            }
            else
            {
                return null;
            }
        }

------解决方案--------------------
C# code

            decimal dm = 909391681;
            byte[] by = BitConverter.GetBytes(decimal.ToInt64(dm));
            string acs = Encoding.ASCII.GetString(by);//貌似多了几个\0