下面的是一段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的吗,如果会的话,应该不难办到