C 代码到 Java -- 字符操作



我需要用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的最下面的两个字节中。

最新更新