下面是aspx代码,在java里面,大于128小于256的整数要强制转换?
帮忙实现下面的功能,用java代码来改写; long bigid = 10151;
long smid = 3721;
byte[] byteArray = { 0x00, 0x00, 0x0e, 0x89, 0x00, 0x00, 0x27, 0xa7 };
// write bigid
byte[] intByte = System.BitConverter.GetBytes(bigid);
byteArray[0] = intByte[3];
byteArray[1] = intByte[2];
byteArray[2] = intByte[1];
byteArray[3] = intByte[0];
// write smid
intByte = System.BitConverter.GetBytes(smid);
byteArray[4] = intByte[3];
byteArray[5] = intByte[2];
byteArray[6] = intByte[1];
byteArray[7] = intByte[0];
/////////////////////////////////////////////////
Stream dataStream =...;
BinaryReader BR = new BinaryReader(dataStream);
// skip 3 byte
BR.ReadByte();
BR.ReadByte();
BR.ReadByte();
if (0 == BR.ReadInt32())
{
byte[] tmpByte = new byte[4];
tmpByte[3] = BR.ReadByte();
tmpByte[2] = BR.ReadByte();
tmpByte[1] = BR.ReadByte();
tmpByte[0] = BR.ReadByte();
int tiia = BitConverter.ToInt32(tmpByte, 0);
out double tA = (double)tiia / 1000000D;
}
帮忙实现下面的功能,用java代码来改写; long bigid = 10151;
long smid = 3721;
byte[] byteArray = { 0x00, 0x00, 0x0e, 0x89, 0x00, 0x00, 0x27, 0xa7 };
// write bigid
byte[] intByte = System.BitConverter.GetBytes(bigid);
byteArray[0] = intByte[3];
byteArray[1] = intByte[2];
byteArray[2] = intByte[1];
byteArray[3] = intByte[0];
// write smid
intByte = System.BitConverter.GetBytes(smid);
byteArray[4] = intByte[3];
byteArray[5] = intByte[2];
byteArray[6] = intByte[1];
byteArray[7] = intByte[0];
/////////////////////////////////////////////////
Stream dataStream =...;
BinaryReader BR = new BinaryReader(dataStream);
// skip 3 byte
BR.ReadByte();
BR.ReadByte();
BR.ReadByte();
if (0 == BR.ReadInt32())
{
byte[] tmpByte = new byte[4];
tmpByte[3] = BR.ReadByte();
tmpByte[2] = BR.ReadByte();
tmpByte[1] = BR.ReadByte();
tmpByte[0] = BR.ReadByte();
int tiia = BitConverter.ToInt32(tmpByte, 0);
out double tA = (double)tiia / 1000000D;
}
其实前4位是3721,后四位数10151;
0x0e=14,0x89=137;14*256+137=3721;
0x27=39,0xa7=167;39*256+167=10151;
------------------------------------------
第一部分是把
long bigid = 10151;
long smid = 3721;
转换为字节数组放到byteArray中,就好了;
----------------------------------------------
第二部分是把
stream 流中的数据跳过3个字节,依次读4个byte到temByte中,然后把temByte转换成double就可以了;
00000001-------(+1)
01111111-------(+127)
00000000--------(0)
10000000-------(-1)
11111111-------(-128)
所以在aspx和c里面和java里面是不同的