有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用Java字符数组处理C字符数组

通过一个socket,我将信息从一个用C编写的程序发送到一个用Java编写的程序

通过C语言的程序,我通过一个字符数组(使用internetsocket)发送两个字节,用Java语言接收的信息也存储在一个字符数组中

我的主要问题是,Java数组中接收到的信息与C程序传输的信息不正确对应

我读过Java中的字符长度为16位,C中的字符长度为8位。这可能是问题所在,但我不知道如何处理/解决这个问题

发送信息的C代码如下:

char buffer[256];
bzero(buffer,256);
n = read(fd, buffer, 255);  // getting info from an uart port, which works properly
n = write(sockfd,buffer,3); // send the information through the socket

部分Java代码(适用于Android应用程序)如下所示:

char[] buffer = new char[256];
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
int readX = in.read(buffer, 0, 3);
if (readX > 0) { // I am using a handler to manipulate the info
    Message msg = new Message();
    msg.obj = buffer;
    mHandler.sendMessage(msg);
} 
....
// Part of the handler is the following:
mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
            char[] buffer;
            buffer = (char[])msg.obj; // the information here is different from the one sent from the C program
            ....
    }
}

任何解决这个问题的建议我都非常感激

谢谢你,格斯


共 (1) 个答案

  1. # 1 楼答案

    使用Java byte类型,它是一个8位有符号整数。还要确保C中的char类型实际上是8位。可以使用Boost StaticAssert设施来确保这一点