c331273351 2009-07-09 17:53
浏览 268
已采纳

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]

  • 写回答

3条回答 默认 最新

  • ganshisheng 2009-07-09 22:43
    关注

    看我码字可怜,分给我吧... :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]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题