我需要用Java编写这个。
虽然我知道如何读取文件,但我对"buff"输出是什么感兴趣,开头的长度是吗?
char *buff;
unsigned char *aux;
while(fgets (buff+2, length, fin)){
len = strlen (buff + 2) + 2;
aux = (unsigned char *) &len;
buff[1] = aux[0];
buff[0] = aux[1];
...
send (sd, buff, len, 0);
}
但我不明白这一点:
aux = (unsigned char *) &len;
buff[1] = aux[0];
buff[0] = aux[1];
提前谢谢。
此代码:
aux = (unsigned char *) &len;
buff[1] = aux[0];
buff[0] = aux[1];
创建存储在 len
中的整数值的字节数组视图。在Java中,你不能做完全相同的事情,但你可以通过几种方式得到你想要的东西。最简单的方法是使用位屏蔽和移位:
int len = ...;
byte[] buff = ...;
byte[0] = (byte) (len & 0xff);
byte[1] = (byte) ((len >> 8) & 0xff);
另一种可能性是使用 ByteBuffer
,但对于如此简单的操作来说,这似乎有点矫枉过正。
buff
似乎是用于从文件中读取数据的缓冲区。看起来程序假设len
最多只有两个(sizeof(无符号字符))字节长。因此,它将len
的最下面的两个字节打包到buf[1:0]
中,方法是将len
的地址解析为unsigned char *
,从而抓取len
最下面的两个字节并将它们粘贴到buff
的最下面的两个字节中。