c#与java的问题.

下面的是一段c#的代码.请大牛帮忙转成java的.跪谢.人在

[code="c#"]
public string GetHexChar(string value)
{
string sReturn = string.Empty;
switch (value)
{
case "10":
sReturn = "A";
break;
case "11":
sReturn = "B";
break;
case "12":
sReturn = "C";
break;
case "13":
sReturn = "D";
break;
case "14":
sReturn = "E";
break;
case "15":
sReturn = "F";
break;
default:
sReturn = value;
break;
}
return sReturn;
}

    //将10进制字符串转化为16进制字符串
    public string ConvertHex(string value)
    {
        string sReturn = string.Empty;
        try
        {
            while (int.Parse(value) > 16)
            {
                int v = int.Parse(value);
                sReturn = GetHexChar((v % 16).ToString()) + sReturn;
                value = Math.Floor(Convert.ToDouble(v / 16)).ToString();
            }

            sReturn = GetHexChar(value) + sReturn;
            if (sReturn.Length == 1)
                sReturn = "0" + sReturn;
        }
        catch
        {
            return "00";
        }

        return sReturn;
    }

    public void CreateHZ(string IMSI, string X, string Y, string speed, string GPS_Dir)
    {
        try
        {

            Socket sck_Client = Connect_Server();

            string strTel = IMSI.Trim();

            byte[] bt_Tel = new byte[16];
            int i = 0;
            for (i = 0; i < strTel.Length; i++)
            {
                string strEach = strTel.Substring(i, 1);
                int iEach = Int32.Parse(strEach);
                iEach = 48 + iEach;
                bt_Tel[i] = (byte)iEach;
            }

            if (strTel.Length < 16)
            {
                for (int j = 0; j < 16 - strTel.Length; j++)
                    bt_Tel[i + j] = 0;
            }


            string strLon = X.Trim();
            double dLon = Double.Parse(strLon);
            dLon = dLon * 648000000 / 180;
            int iLon = Convert.ToInt32(dLon);
            string strILon = iLon.ToString();

            string strHexLon = ConvertHex(strILon);
            if (strHexLon.Length == 7)
                strHexLon = "0" + strHexLon;

            string strHL1 = strHexLon.Substring(0, 2);
            int iHL1 = Convert.ToInt32(strHL1, 16);
            byte btHL1 = (byte)iHL1;

            string strHL2 = strHexLon.Substring(2, 2);
            int iHL2 = Convert.ToInt32(strHL2, 16);
            //              if (iHL2>128)
            //                  iHL2=iHL2-128;
            byte btHL2 = (byte)iHL2;


            string strHL3 = strHexLon.Substring(4, 2);
            int iHL3 = Convert.ToInt32(strHL3, 16);
            //              if (iHL3 >128)
            //                  iHL3=iHL3-128;
            byte btHL3 = (byte)iHL3;


            string strHL4 = strHexLon.Substring(6, 2);
            int iHL4 = Convert.ToInt32(strHL4, 16);

            byte btHL4 = (byte)iHL4;

            string strLat = Y.Trim();
            double dLat = Double.Parse(strLat);
            dLat = dLat * 324000000 / 90;
            int iLat = Convert.ToInt32(dLat);
            string strILat = iLat.ToString();

            string strHexLat = ConvertHex(strILat);
            if (strHexLat.Length == 7)
                strHexLat = "0" + strHexLat;


            string strHA1 = strHexLat.Substring(0, 2);
            int iHA1 = Convert.ToInt32(strHA1, 16);
            byte btHA1 = (byte)iHA1;

            string strHA2 = strHexLat.Substring(2, 2);
            int iHA2 = Convert.ToInt32(strHA2, 16);
            //          if (iHA2 >128)
            //              iHA2=iHA2-128;
            byte btHA2 = (byte)iHA2;

            string strHA3 = strHexLat.Substring(4, 2);
            int iHA3 = Convert.ToInt32(strHA3, 16);
            byte btHA3 = (byte)iHA3;

            string strHA4 = strHexLat.Substring(6, 2);
            int iHA4 = Convert.ToInt32(strHA4, 16);
            //              if (iHA4>128)
            //                  iHA4=iHA4-128;
            byte btHA4 = (byte)iHA4;




            string strYear = DateTime.Now.AddHours(-8).Year.ToString();
            byte bt_Year = 0;


            if (strYear.Length == 4)
            {
                strYear = strYear.Substring(2, 2);

                string strYear1 = strYear.Substring(0, 1);

                if (strYear1 == "0")
                {
                    strYear = strYear.Substring(1, 1);
                }

                int iYear = Convert.ToInt32(strYear);
                bt_Year = (byte)iYear;

            }

            string strMonth = DateTime.Now.AddHours(-8).Month.ToString();
            byte bt_Month = 0;

            int iMonth = Convert.ToInt32(strMonth);
            bt_Month = (byte)iMonth;


            string strDay = DateTime.Now.AddHours(-8).Day.ToString();
            byte bt_Day = 0;
            int iDay = Convert.ToInt32(strDay);
            bt_Day = (byte)iDay;

            string strH = DateTime.Now.AddHours(-8).Hour.ToString();
            byte bt_Hour = 0;
            int iHour = Convert.ToInt32(strH);
            bt_Hour = (byte)iHour;

            string strM = DateTime.Now.AddHours(-8).Minute.ToString();
            int iMin = Convert.ToInt32(strM);
            byte bt_Min = (byte)iMin;

            string strS = DateTime.Now.AddHours(-8).Second.ToString();
            int iSec = Convert.ToInt32(strS);
            byte bt_Sec = (byte)iSec;

            string strSpeed = speed.Trim();
            double dSpeed = Convert.ToDouble(strSpeed);
            int iSpeed = 0;

            if (dSpeed <= 1)
                iSpeed = 1;
            else if (dSpeed > 1)
                iSpeed = (int)dSpeed;

            int iSp1 = 0;
            int iSp2 = 0;
            if (iSpeed > 255)
            {
                iSp1 = iSpeed / 256;
            }
            iSp2 = iSpeed - iSp1 * 256;

            byte bt_Sp1 = (byte)iSp1;
            byte bt_Sp2 = (byte)iSp2;



            string strDirect = GPS_Dir;

            double dDirect = 100 * Convert.ToDouble(strDirect);

            int iDirect = (int)dDirect;
            int iDir1 = 0;
            int iDir2 = 0;
            if (iDirect > 255)
            {
                iDir1 = iDirect / 256;
            }
            iDir2 = iDirect - iDir1 * 256;

            byte bt_Dir1 = (byte)iDir1;
            byte bt_Dir2 = (byte)iDir2;


            if (sck_Client != null)
            {
                byte[] byteData = { 35, 35, 85, 83, 101, bt_Tel[0], bt_Tel[1], bt_Tel[2], bt_Tel[3], bt_Tel[4], bt_Tel[5], bt_Tel[6], bt_Tel[7], bt_Tel[8], bt_Tel[9], bt_Tel[10], bt_Tel[11], bt_Tel[12], bt_Tel[13], bt_Tel[14], bt_Tel[15], 99, 00, 22, 00, 00, 00, 33, bt_Year, bt_Month, bt_Day, bt_Hour, bt_Min, bt_Sec, btHL1, btHL2, btHL3, btHL4, btHA1, btHA2, btHA3, btHA4, bt_Sp1, bt_Sp2, bt_Dir1, bt_Dir2, 13, 10 };

                //string strSend = Encoding.ASCII.GetString

                //byte[] byteMessage = Encoding.GetEncoding("gb2312").GetBytes(strSend);

                sck_Client.Send(byteData, byteData.Length, SocketFlags.None);

                byte[] recvBytes = new byte[8000];

                sck_Client.Shutdown(SocketShutdown.Both);
                sck_Client.Close();




            }
        }
        catch (Exception exp)
        {
            string strExp = exp.Message.ToString();
            return;
        }

    }

}

}

[/code]

看我码字可怜,分给我吧... :cry: :cry: :cry:
[code="java"]import java.net.Socket;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;

public class Test {
public String GetHexChar(String value) {
int v = Integer.parseInt(value);
String sReturn = "";
switch (v) {
case 10:
sReturn = "A";
break;
case 11:
sReturn = "B";
break;
case 12:
sReturn = "C";
break;
case 13:
sReturn = "D";
break;
case 14:
sReturn = "E";
break;
case 15:
sReturn = "F";
break;
default:
sReturn = value;
break;
}
return sReturn;
}

// 将10进制字符串转化为16进制字符串
public String ConvertHex(String value) {
    String sReturn = "";// String.Empty;
    try {
        while (Integer.parseInt(value) > 16) // while (int.Parse(value) >
                                                // 16)
        {
            int v = Integer.parseInt(value);// int.Parse(value);
            sReturn = GetHexChar(String.valueOf(v % 16)) + sReturn;// ToString())
                                                                    // +
                                                                    // sReturn;
            value = String.valueOf(Math.floor((double) (v / 16))); // .ToString();
        }

        sReturn = GetHexChar(value) + sReturn;
        if (sReturn.length() == 1)
            sReturn = "0" + sReturn;
    } catch (Exception ex) // catch
    {
        return "00";
    }

    return sReturn;
}

public void CreateHZ(String IMSI, String X, String Y, String speed,
        String GPS_Dir) {
    try {

        Socket sck_Client = new Socket();// Connect_Server();

        String strTel = IMSI.trim();// Trim();

        byte[] bt_Tel = new byte[16];
        int i = 0;
        for (i = 0; i < strTel.length(); i++) {
            String strEach = strTel.substring(i, 1);
            int iEach = Integer.parseInt(strEach);// Int32.Parse(strEach);
            iEach = 48 + iEach;
            bt_Tel[i] = (byte) iEach;
        }

        if (strTel.length() < 16) {
            for (int j = 0; j < 16 - strTel.length(); j++)
                bt_Tel[i + j] = 0;
        }

        String strLon = X.trim();
        double dLon = Double.parseDouble(strLon);
        dLon = dLon * 648000000 / 180;
        int iLon = (int) (dLon);// Convert.ToInt32(dLon);
        String strILon = String.valueOf(iLon);// iLon.ToString();

        String strHexLon = ConvertHex(strILon);
        if (strHexLon.length() == 7)
            strHexLon = "0" + strHexLon;

        String strHL1 = strHexLon.substring(0, 2);

        // Convert.ToInt32(strHL1, 16);? 这个方法具体用法不清楚,从16进制转为10进制吗,
        // 下面的是转化成10进制
        int iHL1 = Integer.valueOf(strHL1, 16);
        // int iHL1 = Integer.parseInt(strHL1);

        byte btHL1 = (byte) iHL1;

        String strHL2 = strHexLon.substring(2, 2);
        int iHL2 = Integer.valueOf(strHL2, 16);
        // int iHL2 = Integer.parseInt(strHL2);//Convert.ToInt32(strHL2,
        // 16);
        // if (iHL2>128)
        // iHL2=iHL2-128;
        byte btHL2 = (byte) iHL2;

        String strHL3 = strHexLon.substring(4, 2);
        int iHL3 = Integer.valueOf(strHL3, 16);
        // int iHL3 = Integer.parseInt(strHL3);//Convert.ToInt32(strHL3,
        // 16);
        // if (iHL3 >128)
        // iHL3=iHL3-128;
        byte btHL3 = (byte) iHL3;

        String strHL4 = strHexLon.substring(6, 2);
        int iHL4 = Integer.valueOf(strHL4, 16);
        // int iHL4 = Integer.parseInt(strHL4);//Convert.ToInt32(strHL4,
        // 16);

        byte btHL4 = (byte) iHL4;

        String strLat = Y.trim();
        double dLat = Double.parseDouble(strLat);
        dLat = dLat * 324000000 / 90;
        int iLat = (int) (dLat);// Convert.ToInt32(dLat);
        String strILat = String.valueOf(iLat);// iLat.ToString();

        String strHexLat = ConvertHex(strILat);
        if (strHexLat.length() == 7)
            strHexLat = "0" + strHexLat;

        String strHA1 = strHexLat.substring(0, 2);
        int iHA1 = Integer.valueOf(strHA1, 16);
        // int iHA1 = Integer.parseInt(strHA1);//Convert.ToInt32(strHA1,
        // 16);
        byte btHA1 = (byte) iHA1;

        String strHA2 = strHexLat.substring(2, 2);
        int iHA2 = Integer.valueOf(strHA2, 16);
        // int iHA2 =
        // Integer.parseInt(strHA2);//trHA1Convert.ToInt32(strHA2, 16);
        // if (iHA2 >128)
        // iHA2=iHA2-128;
        byte btHA2 = (byte) iHA2;

        String strHA3 = strHexLat.substring(4, 2);
        int iHA3 = Integer.valueOf(strHA3, 16);
        // int iHA3 = Integer.parseInt(strHA3);//Convert.ToInt32(strHA3,
        // 16);
        byte btHA3 = (byte) iHA3;

        String strHA4 = strHexLat.substring(6, 2);
        int iHA4 = Integer.valueOf(strHA4, 16);
        // int iHA4 = Integer.parseInt(strHA4);//Convert.ToInt32(strHA4,
        // 16);
        // if (iHA4>128)
        // iHA4=iHA4-128;
        byte btHA4 = (byte) iHA4;

        /*
         * 您这是获得目前小时-8的的时间吗,就是0时区(格林威治时间)的时间了?
         */

        /********************** 时间控制 **************************************/
        TimeZone tz = TimeZone.getTimeZone("Etc/Greenwich");
        TimeZone.setDefault(tz);
        SimpleDateFormat sdf = new SimpleDateFormat(
                "yyyy-MM-dd   HH:mm:ss   z");
        sdf.setTimeZone(tz);
        System.out.println("The   current   time   in   Greenwich   is:   "
                + sdf.format(new Date()));

        // using Calendar:

        Calendar calendar = new GregorianCalendar(tz);
        Date date = new Date();
        calendar.setTime(date);
        /********************* 时间对象 **************************************/
        String strYear = String.valueOf(calendar.get(Calendar.YEAR));// DateTime.Now.AddHours(-8).Year.ToString();
        byte bt_Year = 0;

        if (strYear.length() == 4) {
            strYear = strYear.substring(2, 2);

            String strYear1 = strYear.substring(0, 1);

            if (strYear1 == "0") {
                strYear = strYear.substring(1, 1);
            }

            int iYear = Integer.parseInt(strYear);// Convert.ToInt32(strYear);
            bt_Year = (byte) iYear;

        }

        String strMonth = String.valueOf(calendar.get(Calendar.MONTH) + 1);// DateTime.Now.AddHours(-8).Month.ToString();
        byte bt_Month = 0;

        int iMonth = Integer.parseInt(strMonth);// Convert.ToInt32(strMonth);
        bt_Month = (byte) iMonth;

        String strDay = String.valueOf(calendar.get(Calendar.DATE));// DateTime.Now.AddHours(-8).Day.ToString();
        byte bt_Day = 0;
        int iDay = Integer.parseInt(strDay);// Convert.ToInt32(strDay);
        bt_Day = (byte) iDay;

        String strH = String.valueOf(calendar.get(Calendar.HOUR));// DateTime.Now.AddHours(-8).Hour.ToString();
        byte bt_Hour = 0;
        int iHour = Integer.parseInt(strH);// Convert.ToInt32(strH);
        bt_Hour = (byte) iHour;

        String strM = String.valueOf(calendar.get(Calendar.MINUTE));// DateTime.Now.AddHours(-8).Minute.ToString();
        int iMin = Integer.parseInt(strM);// Convert.ToInt32(strM);
        byte bt_Min = (byte) iMin;

        String strS = String.valueOf(calendar.get(Calendar.SECOND));// DateTime.Now.AddHours(-8).Second.ToString();
        int iSec = Integer.parseInt(strS);// Convert.ToInt32(strS);
        byte bt_Sec = (byte) iSec;

        String strSpeed = speed.trim();
        double dSpeed = Integer.parseInt(strSpeed);// Convert.ToDouble(strSpeed);
        int iSpeed = 0;

        if (dSpeed <= 1)
            iSpeed = 1;
        else if (dSpeed > 1)
            iSpeed = (int) dSpeed;

        int iSp1 = 0;
        int iSp2 = 0;
        if (iSpeed > 255) {
            iSp1 = iSpeed / 256;
        }
        iSp2 = iSpeed - iSp1 * 256;

        byte bt_Sp1 = (byte) iSp1;
        byte bt_Sp2 = (byte) iSp2;

        String strDirect = GPS_Dir;

        double dDirect = 100 * Double.parseDouble(strDirect);// Convert.ToDouble(strDirect);

        int iDirect = (int) dDirect;
        int iDir1 = 0;
        int iDir2 = 0;
        if (iDirect > 255) {
            iDir1 = iDirect / 256;
        }
        iDir2 = iDirect - iDir1 * 256;

        byte bt_Dir1 = (byte) iDir1;
        byte bt_Dir2 = (byte) iDir2;

        if (sck_Client != null) {
            byte[] byteData = { 35, 35, 85, 83, 101, bt_Tel[0], bt_Tel[1],
                    bt_Tel[2], bt_Tel[3], bt_Tel[4], bt_Tel[5], bt_Tel[6],
                    bt_Tel[7], bt_Tel[8], bt_Tel[9], bt_Tel[10],
                    bt_Tel[11], bt_Tel[12], bt_Tel[13], bt_Tel[14],
                    bt_Tel[15], 99, 00, 22, 00, 00, 00, 33, bt_Year,
                    bt_Month, bt_Day, bt_Hour, bt_Min, bt_Sec, btHL1,
                    btHL2, btHL3, btHL4, btHA1, btHA2, btHA3, btHA4,
                    bt_Sp1, bt_Sp2, bt_Dir1, bt_Dir2, 13, 10 };

            // String strSend = Encoding.ASCII.GetString

            // byte[] byteMessage =
            // Encoding.GetEncoding("gb2312").GetBytes(strSend);

            /** SocketFlags 这个参数是如何获得的? *************/
            sck_Client.Send(byteData, byteData.length, SocketFlags.None);

            byte[] recvBytes = new byte[8000];
            /***************** 同上SocketShutdown ***************/
            sck_Client.Shutdown(SocketShutdown.Both);
            sck_Client.close();// .Close();

        }
    } catch (Exception exp) {
        String strExp = exp.getMessage().toString();// exp.Message.ToString();
        return;
    }

}

}
[/code]

C#与JAVA有80%的相似度,了解了C#中方法的含义,就可以根据JDK API去查找到类似的JAVA方法,这样不是很好嘛。

PS:问问题不要这样问,会被人鄙视的。

你是不会java的吗,如果会的话,应该不难办到