getHexString这个函数,直接粘到C#就成,不用改的.
toHexString,没看懂到底想干什么.

解决方案 »

  1.   

    getHexString没有加break,存在死循环的隐患
      

  2.   


    public static string ToHexString(string str)
    {
      return String.Join(str.Select(ch => ((int)ch).ToString("X4")));
    }
      

  3.   

    更正一下
    public static string ToHexString(string str)
    {
      return String.Join(String.Empty, str.Select(ch => ((int)ch).ToString("X4")));
    }
      

  4.   

    你这是要将字母对应的ASCII码转为十六进制码? private string getHexString(string hexString)
            {//这个基本不用改
                String hexStr = "";
                for (int i = hexString.Count(); i < 4; i++)
                {
                    if (i == hexString.Count())
                        hexStr = "0";
                    else
                        hexStr = hexStr + "0";
                }
                return hexStr + hexString;
            }        public  String toHexString(String str)
            {
                String strResult = null;
                char [] charAt=str.ToCharArray();
                for (int i = 0; i < str.Count(); i++)
                {
                    if (i == 0)
                    {
                       // strResult = getHexString(Integer.toHexString(str.charAt(i)).toUpperCase());
                        strResult = getHexString(Convert.ToInt32(charAt[i]).ToString("X2"));
                    }
                    else
                    {
                        //strResult = strResult + getHexString(Integer.toHexString(str.charAt(i)).toUpperCase());这是你原来的代码
                        strResult = strResult + getHexString(Convert.ToInt32(charAt[i]).ToString("X2"));
                    }
                }
                return strResult;
            }
      

  5.   


    看看c#的代码多好. .一句话解决了java几十行的代码..战斗力只有5的java是不会懂的...
      

  6.   

    那是因为,java很多语法用法都是偏向C,很多这方面的操作都是直接底层数据交换,不像微软那样考虑那么周到。如果是我做JAVA,估计也要积累那一大堆的方便使用操作的函数。
      

  7.   

            public static string ToHexString(string str)
            {
                string strResult = string.Empty;            char[] strToChars = str.ToCharArray();            for (int i = 0; i < strToChars.Length; i++)
                {
                    strResult += GetHexString((Convert.ToInt32(strToChars[i])).ToString().ToUpper());
                }            return strResult;
            }        private static string GetHexString(string hexString)
            {
                string hexStr = "0000";            if (hexString.Length < 4)
                {
                    hexStr = hexStr.Substring(0, 4 - hexString.Length);
                }            return hexStr + hexString;
            }直接翻译过来是这样,如果你能描述下你的需求的话可以写的更好一点。你是想把每一个字符转换成四位的16进制么?
      

  8.   

    getHexString
    想简化,应该这样:
     private static string GetHexString(string hexString)         

    return hexString.PadLeft(hexString.length()*2,'0');
    }
      

  9.   

    弄错了,应该是hexString.PadLeft(4,'0');