static int mestempa;
static int checksum = 0;
public byte[] getmessage(byte dizhi,byte xinxileixing,byte len, byte dong, byte shijian, byte sudu, string juzi, byte yeyihao, byte leixinghao)
{
byte[] messagetemp = System.Text.Encoding.Default.GetBytes(juzi);
byte[] message = new byte[messagetemp.Length + 19];
message[0] = 0x2A;
message[1] = 0x2A;
message[2] = 0x53;
message[3] = 0x54;
message[4] = dizhi;
message[5] = len;
message[6] = yeyihao;
message[7] = leixinghao;
message[8] = dong;
message[9] = shijian;
message[10] = sudu;
for (int i = 0; i < message.Length; i++)
{
for (int j = 0; j < messagetemp.Length; j++)
{
byte d = messagetemp[j];
byte[] dd = new byte[4];
dd[0] = (byte)(d / (256 * 256 * 256));
dd[1] = (byte)((d / (256 * 256)) % 256);
dd[2] = (byte)((d / 256) % 256);
dd[3] = (byte)(d % 256);
mestempa = Convert.ToInt16(message[0]) + Convert.ToInt16(message[1]) + Convert.ToInt16(message[2]) + Convert.ToInt16(message[3]) + Convert.ToInt16(message[4]) + Convert.ToInt16(message[5]) + Convert.ToInt16(xinxileixing) + Convert.ToInt16(dd[0]) + Convert.ToInt16(dd[1]) + Convert.ToInt16(dd[2]) + Convert.ToInt16(dd[3]);
}
}
//防止数据溢出
byte[] messs = new byte[4];
messs[0] = (byte)(mestempa / (256 * 256 * 256));
messs[1] = (byte)((mestempa / (256 * 256)) % 256);
messs[2] = (byte)((mestempa / 256) % 256);
messs[3] = (byte)(mestempa % 256);
//校验用和
for (int j = 0; j < message.Length + messagetemp.Length; j++)
checksum = checksum + (int)messs[j];
message[11] = (byte)(checksum / 256); //两个校验位
message[12] = (byte)(checksum % 256);
int xx = messagetemp.Length;
for (int ii = 0; ii < messagetemp.Length; ii++)
{
message[ii + 13] = messagetemp[ii];
} message[xx + 13] = 0x2A;
message[xx + 14] = 0x2A;
message[xx + 15] = 0x45;
message[xx + 16] = 0x4E;
return message;
}
我是一个菜鸟 谁能告诉下 这样写 有错误吗 有的话 麻烦指出来 请来点实质性的代码 不然我看不懂 不要老是 思路 思路是有 但是总是错
static int checksum = 0;
public byte[] getmessage(byte dizhi,byte xinxileixing,byte len, byte dong, byte shijian, byte sudu, string juzi, byte yeyihao, byte leixinghao)
{
byte[] messagetemp = System.Text.Encoding.Default.GetBytes(juzi);
byte[] message = new byte[messagetemp.Length + 19];
message[0] = 0x2A;
message[1] = 0x2A;
message[2] = 0x53;
message[3] = 0x54;
message[4] = dizhi;
message[5] = len;
message[6] = yeyihao;
message[7] = leixinghao;
message[8] = dong;
message[9] = shijian;
message[10] = sudu;
for (int i = 0; i < message.Length; i++)
{
for (int j = 0; j < messagetemp.Length; j++)
{
byte d = messagetemp[j];
byte[] dd = new byte[4];
dd[0] = (byte)(d / (256 * 256 * 256));
dd[1] = (byte)((d / (256 * 256)) % 256);
dd[2] = (byte)((d / 256) % 256);
dd[3] = (byte)(d % 256);
mestempa = Convert.ToInt16(message[0]) + Convert.ToInt16(message[1]) + Convert.ToInt16(message[2]) + Convert.ToInt16(message[3]) + Convert.ToInt16(message[4]) + Convert.ToInt16(message[5]) + Convert.ToInt16(xinxileixing) + Convert.ToInt16(dd[0]) + Convert.ToInt16(dd[1]) + Convert.ToInt16(dd[2]) + Convert.ToInt16(dd[3]);
}
}
//防止数据溢出
byte[] messs = new byte[4];
messs[0] = (byte)(mestempa / (256 * 256 * 256));
messs[1] = (byte)((mestempa / (256 * 256)) % 256);
messs[2] = (byte)((mestempa / 256) % 256);
messs[3] = (byte)(mestempa % 256);
//校验用和
for (int j = 0; j < message.Length + messagetemp.Length; j++)
checksum = checksum + (int)messs[j];
message[11] = (byte)(checksum / 256); //两个校验位
message[12] = (byte)(checksum % 256);
int xx = messagetemp.Length;
for (int ii = 0; ii < messagetemp.Length; ii++)
{
message[ii + 13] = messagetemp[ii];
} message[xx + 13] = 0x2A;
message[xx + 14] = 0x2A;
message[xx + 15] = 0x45;
message[xx + 16] = 0x4E;
return message;
}
我是一个菜鸟 谁能告诉下 这样写 有错误吗 有的话 麻烦指出来 请来点实质性的代码 不然我看不懂 不要老是 思路 思路是有 但是总是错
if (comboBox1.Text == "打出")
{
d = "00";
}
else if (comboBox1.Text == "闪烁")
{
d = "01";
}
else if (comboBox1.Text == "左移")
{
d = "02";
}
else if (comboBox1.Text == "上移")
{
d = "03";
}
else if (comboBox1.Text == "下移")
{
d = "04";
}
//获得车辆信息end
byte tiaohao = (byte)Convert.ToUInt32(textBox3.Text);
byte dong = (byte)Convert.ToUInt32(d);
byte shijian = (byte)Convert.ToUInt32(textBox1.Text);
byte sudu = (byte)Convert.ToUInt32(comboBox2.Text);
string juzi = textBox2.Text.Trim();
long sum = long.Parse(carname);
byte dizhi;
byte len = (byte)Convert.ToUInt32(textBox2.Text.Length + d.Length +textBox1.Text.Length + comboBox2.SelectedItem.ToString().Length) ;
// byte len = (byte)Convert.ToUInt16(textBox2.Text.Length);
byte xinxileixing;
if (di == "FF")
{
dizhi = 0xff;
}
else
{
dizhi = (byte)Convert.ToUInt32(textBox12.Text.Trim());
}
if (count % 255 != 0)
{
xinxileixing = 0x13;
}
else
{
xinxileixing = 0x60;
} byte[] card = new byte[4];
card[0] = (byte)(sum / (256 * 256 * 256));
card[1] = (byte)((sum / (256 * 256)) % 256);
card[2] = (byte)((sum / 256) % 256);
card[3] = (byte)(sum % 256); byte[] message = getmessage(dizhi, xinxileixing, len,dong,shijian, sudu, juzi, 0x03, tiaohao);
for (int j = 0; j < port_count; j++)
{ if (port[j].ToString() == local_port)
{
server[j].udpclient.mySendTest(server[j].server, portsend, card, message, 0x59); //发送命令
j = port_count + 1; }
}
byte[] dd = new byte[4];
dd[0] = (byte)(d / (256 * 256 * 256));
dd[1] = (byte)((d / (256 * 256)) % 256);
dd[2] = (byte)((d / 256) % 256);
dd[3] = (byte)(d % 256);
mestempa = Convert.ToInt16(message[0]) + Convert.ToInt16(message[1]) + Convert.ToInt16(message[2]) + Convert.ToInt16(message[3]) + Convert.ToInt16(message[4]) + Convert.ToInt16(message[5]) + Convert.ToInt16(xinxileixing) + Convert.ToInt16(dd[0]) + Convert.ToInt16(dd[1]) + Convert.ToInt16(dd[2]) + Convert.ToInt16(dd[3]);
这块 有错误吗
byte d = messagetemp[j]; //d是8位无符号整数,范围0-255
byte[] dd = new byte[4];
dd[0] = (byte)(d / (256 * 256 * 256));//d / (256 * 256 * 256)是0
dd[1] = (byte)((d / (256 * 256)) % 256);//d / (256 * 256)是0
dd[2] = (byte)((d / 256) % 256);//d / 256是0
dd[3] = (byte)(d % 256);不知道你要做什么
实在不好做,转换成int吧,然后进行处理
我想把那个 juzi 转成 byte[] 然后与另一个byte[] 相加