gpt4 book ai didi

c++ - c++ tcpserver 可以接收无符号字符吗?

转载 作者:行者123 更新时间:2023-11-28 07:33:42 25 4
gpt4 key购买 nike

目前我有一个 c# tcpclient 和一个 c++ tcpserver,但我只能从服务器端的流中读取字符,因此所有数据都将转换为字符。由于c++ char是一个有符号的8位整数,而c#客户端发送的字节是无符号的8位整数,所以客户端发送的所有>=128的数据都无法在服务器端正确接收。示例:

        char[] textChars = text.ToCharArray();
byte[] textBytes = new byte[textChars.Length *2];
byte low;
byte high;
UInt16 current;
for (int i = 0; i < textChars.Length; i++)
{
current = (UInt16)textChars[i];
high = (byte)(current / 256);
low = (byte)(current % 256);
textBytes[i * 2] = high;
textBytes[i * 2 + 1] = low;
}

currentStream.Write(textBytes, 0, textBytes.Length);
currentStream.Flush();

这是在客户端,我打印出我在服务器端收到的作为签名 int 的内容:如果我发送一个 ascii 码 = 136 的字符,它将变成 2 个字节:0,136。但在服务器端,它打印 0,-22。那么有没有办法让c++流读取unsigned char?还是有另一种方法来解决这个问题?感谢您的帮助!

最佳答案

您通过 TCP 连接获得的只是原始数据,您选择解释它的方式决定了它的外观。

最简单的解决方案可能是在打印/使用之前将其转换为:

signed char val = -22;               // emulate receipt of signed char.
printf ("%d\n", (unsigned char)val); // cast to change interpretation.

关于c++ - c++ tcpserver 可以接收无符号字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17160669/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com