PHP';Java中的s包(";N";,$str)
我需要帮助将这行PHP翻译成JavaPHP';Java中的s包(";N";,$str),java,php,pack,Java,Php,Pack,我需要帮助将这行PHP翻译成Javapack('N',$data) $data应为7-9个数字字符,最后一个为空 我想在完成那个功能之后,它会被打包成一个很长的文件 将通过套接字推送到将运行以下操作的服务器: byte[] abyte = datagrampacket.getData(); c(abyte, 7, datagrampacket.getLength()) c(…)如下所示: public static int c(byte[] abyte, int i, int j) {
pack('N',$data)
$data应为7-9个数字字符,最后一个为空
我想在完成那个功能之后,它会被打包成一个很长的文件
将通过套接字推送到将运行以下操作的服务器:
byte[] abyte = datagrampacket.getData();
c(abyte, 7, datagrampacket.getLength())
c(…)如下所示:
public static int c(byte[] abyte, int i, int j) {
return 0 > j - i - 4 ? 0 : abyte[i] << 24 | (abyte[i + 1] & 255) << 16 | (abyte[i + 2] & 255) << 8 | abyte[i + 3] & 255;
}
公共静态int c(字节[]abyte,int i,int j){
返回0>j-i-4?0:abyte[i]string'/0/c9/e6/aa'(长度=11)经过一天的数学计算,我已经算出了。现在我已经算出了,其实很简单
在java中:
int x = (int) Math.floor(j/2^16);
int y = (int) Math.floor((j-(x*65536))/2^8);
int z = (int) Math.floor(j-((x*2^16)+(y*2^8)));
x = 2nd character
y = 3rd character
z = 4th character
这些数字是三位数,因此您需要将其转换为十六进制。仅供碰巧遇到这个问题的人参考。另一个选项是以类似于以下的方式使用ByteBuffer:
随着值的增加,上面的代码开始失败。请参阅。
int x = (int) Math.floor(j/2^16);
int y = (int) Math.floor((j-(x*65536))/2^8);
int z = (int) Math.floor(j-((x*2^16)+(y*2^8)));
x = 2nd character
y = 3rd character
z = 4th character
static String packN(int value) {
byte[] bytes = ByteBuffer.allocate(4).putInt(new Integer(value)).array();
return new String(bytes, 'UTF-8');
}
static int unpackN(String value) {
return ByteBuffer.wrap(value.bytes).getInt();
}