c++客户端通过socket向java传值错误

taoqilin 2014-08-11 12:03:40
c++里的代码:
char sendBuf[100] = {'00','00','00','01','00','00','00','04'};
sprintf(sendBuf+8,"%s%s",userName.getCString(),password.getCString());
cSocket.Send(sendBuf, strlen(sendBuf)+1, 0);

在java接到的IOBuffer里,发现传过来的userName,password两个字符串是正常的,但开始时的1,4两个int值 都变成了 30 30 30 31 30 30 30 34,实在是不知道开头的3是从何而来的?

真心求解,自己研究了好久......
...全文
139 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
brookmill 2014-08-11
  • 打赏
  • 举报
回复
30 == '0', 31 == '1', 34 == '4'
brookmill 2014-08-11
  • 打赏
  • 举报
回复
改成 char sendBuf[100] = { 0, 0, 0, 1, 0, 0, 0, 4} ; 或者? char sendBuf[100] = { 1, 0, 0, 0, 4, 0, 0, 0} ;
赵4老师 2014-08-11
  • 打赏
  • 举报
回复
'04'和'\x04'不是一回事!
赵4老师 2014-08-11
  • 打赏
  • 举报
回复
电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址; 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息…… 建议楼主先学会使用抓包软件如wireshark
brookmill 2014-08-11
  • 打赏
  • 举报
回复
char sendBuf[100] = {'00','00','00','01','00','00','00','04'}; sprintf(sendBuf+8,"%s%s",userName.getCString(),password.getCString()); len = strlen(sendBuf)+1; /* 把1和4写进前8个字节,注意大小端的字节顺序 */ cSocket.Send(sendBuf, len, 0);
brookmill 2014-08-11
  • 打赏
  • 举报
回复
引用 7 楼 taoqilin 的回复:
哦,谢谢LZ的各位,你们说的很正确,ASCALL的字符‘0’换成数字是30,依次类推。 再次请教下,我想把1,4这两个int变量存入sendBuf里,用char sendBuf[100] = {0,0,0,1,0,0,0,4};不行,第一个0就把sendBuf这个字符串截断了,我该怎么操作呢?
那你只好先sprintf,然后算出长度,最后临发送之前才把1和4存进去
taoqilin 2014-08-11
  • 打赏
  • 举报
回复
引用 1 楼 brookmill 的回复:
改成 char sendBuf[100] = { 0, 0, 0, 1, 0, 0, 0, 4} ; 或者? char sendBuf[100] = { 1, 0, 0, 0, 4, 0, 0, 0} ;
哦,谢谢LZ的各位,你们说的很正确,ASCALL的字符‘0’换成数字是30,依次类推。 再次请教下,我想把1,4这两个int变量存入sendBuf里,用char sendBuf[100] = {0,0,0,1,0,0,0,4};不行,第一个0就把sendBuf这个字符串截断了,我该怎么操作呢?
taoqilin 2014-08-11
  • 打赏
  • 举报
回复
引用 3 楼 max_min_ 的回复:
字符和数字。。
哦,谢谢LZ的各位,你们说的很正确,ASCALL的字符‘0’换成数字是30,依次类推。 再次请教下,我想把1,4这两个int变量存入sendBuf里,用char sendBuf[100] = {0,0,0,1,0,0,0,4};不行,第一个0就把sendBuf这个字符串截断了,我该怎么操作呢?
taoqilin 2014-08-11
  • 打赏
  • 举报
回复
哦,谢谢LZ的各位,你们说的很正确,ASCALL的字符‘0’换成数字是30,依次类推。 再次请教下,我想把1,4这两个int变量存入sendBuf里,用char sendBuf[100] = {0,0,0,1,0,0,0,4};不行,第一个0就把sendBuf这个字符串截断了,我该怎么操作呢?
勤奋的小游侠 2014-08-11
  • 打赏
  • 举报
回复
字符和int类型的关系楼主没有搞懂
max_min_ 2014-08-11
  • 打赏
  • 举报
回复
字符和数字。。

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧