我正在编写一个程序,该程序将与运行Java的另一台计算机进行交互,并且需要通过网络发送字符数组。在接收端,Java程序使用DataInputStream的readChar()函数并期望字符。但是,由于字符在C中存储为1个字节,所以在写入网络时遇到了一些麻烦。将C字符转换为UTF-16以通过网络传输
我该如何去转换呢?
实际协议规范是像这样:
short: Contains length of char array
char 1, 2, 3...: The characters in the array
有关背景信息,我的短转换是像这样:
char *GetBytesShort(short data)
{
short net_data = NET_htons(data);
char *ptr = (char *) malloc(sizeof(short));
memcpy(ptr, &net_data, sizeof(short));
return ptr;
}
我已经测试了在Java中接收端,和短不会正确地发送正确的长度,但字符数组不会。
在此先感谢!
将转换您的文字吗?我知道C到Java的数据交换可能是一个真正的痛苦:) :) – JScoobyCed
使用'byte'数组而不是'char'。 –