求改写(const char *)args为C#代码

hiaming 2015-10-24 09:15:24
在C++里有一段:
args是int[9] 9个数字。
bytes = send(ConnectSocket, (const char *)args, sizeof(args), 0);
发出去后 是9*4=36个字节

而我的C# 用Socket改写。
bytes = clientSocket.Send(args);
发出去的只有9个字节。 不知道要怎么转换。
重点在 (const char *)args
...全文
125 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nomasp 2015-10-24
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
唉,还是告诉你一些东西吧。 (const char *) 这个写法,是随随便便地。因为在c++中,随便地写char或者别的什么,其实都是一样的代表着“指针”而已,这里可以胡乱写。比如说程序员根本不管不顾 args 到底是怎样定义声明的,这里也照样可以写 char,编译器不会报错,c++程序由于没有类型检查机制(相当于没有框架只有底盘的越野车)因此运行时也不会报错。 如果你作为一个c#程序员,不了解c++程序这里是胡乱写的,不了解真正所谓 sizeof(args) 为什么是36,也就是说你不了解混乱的代码背后的底层知识,你就会误读c++代码了。那么你翻译为c#代码一定就是用错了类型了。
前辈理解的真透彻……
  • 打赏
  • 举报
回复
唉,还是告诉你一些东西吧。 (const char *) 这个写法,是随随便便地。因为在c++中,随便地写char或者别的什么,其实都是一样的代表着“指针”而已,这里可以胡乱写。比如说程序员根本不管不顾 args 到底是怎样定义声明的,这里也照样可以写 char,编译器不会报错,c++程序由于没有类型检查机制(相当于没有框架只有底盘的越野车)因此运行时也不会报错。 如果你作为一个c#程序员,不了解c++程序这里是胡乱写的,不了解真正所谓 sizeof(args) 为什么是36,也就是说你不了解混乱的代码背后的底层知识,你就会误读c++代码了。那么你翻译为c#代码一定就是用错了类型了。
  • 打赏
  • 举报
回复
引用 楼主 hiaming 的回复:
重点在 (const char *)args
你知道这里的坑有多大吗? 我告诉你一个指针,就能把你动动嘴儿就支上火星,而我自己根本上不了火星。你说这是我骗你,还是你骗了自己啊? 因此c#程序员干好自己的跟COM、跟java等等的协同交互就行了,不要轻易跟c++去纠缠什么“指针”之坑。
  • 打赏
  • 举报
回复
这些接口应该让那些自认为“越底层越万能”的c++程序员去提供。作为c#程序员,你只要验收它们的基于.net或者COM统一协议的接口组件就行了。不要替c++程序员干活儿。
Poopaye 2015-10-24
  • 打赏
  • 举报
回复
int[9] a; byte[36] b; Buffer.BlockCopy(a, 0, b, 0, 36);

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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