websocket 只能接收ascii码以内的字符 100C

如题,我用c写了一个websocket的服务器,与js通信时发现,传输字符时正常,但传输ascii码以外,即大于或等于0x80的数时报错。就是websocket接收到ascii字符,响应函数是onMassage,接收到0x80以上的数,响应函数是onError,请问各位如何解决?
已知发送端没有问题,设置了断点,确定发送的数据是正确的,但接收部分出错。

0

2个回答

针对0x80以上的数,使用扩展的ASCII码:
https://zhidao.baidu.com/question/366622538.html

0

你用的类型是什么?char还是unsigned char \int 或者其他?
字符在计算机中以其ASCII码方式表示, 其长度为1个字节, 有符号字符型数
取值范围为-128~127, 无符号字符型数到值范围是0~255。因此在Turbo C语言中,
字符型数据在操作时将按整型数处理, 如果某个变量定义成char, 则表明该变量
是有符号的, 即它将转换成有符号的整型数。
Turbo C中规定对ASCII码值大于0x80的字符将被认为是负数。例如ASCII 值
为0x8c的字符, 定义成char时, 被转换成十六进制的整数0xff8c 。 这是因当
ASCII码值大于0x80时, 该字节的最高位为1, 计算机会认为该数为负数, 对于
0x8c表示的数实际上是-74(8c的各位取反再加1), 而-74 转换成两字节整型数并
在计算机中表示时就是0xff8c( 对0074 各位取反再加1) 。 因此只有定义为
unsigned char 0x8c转换成整型数时才是8c。这一点在处理大于0x80的ASCII码
字符时(例如汉字码)要特别注意。一般汉字均定义为unsigned char

0
walker_men
walker_men 你好,我用的数据类型是unsigned char,发送端发送的数据是我想发送的数据,用visual Studio的监视功能,但问题是接收端接收到这样的数据报错,只要是ascii码以外的都有问题。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!