110,561
社区成员
发帖
与我相关
我的任务
分享
C#的char是两个字节的我把psw字段改成byte[]就可以正确的取出来了,为啥char[]就是不行呢?? [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string psw; 这种方式就可以,gb2312的可以解析出来结果不对啊,char数组一直取不到值。不过byte数组我又测试了下,psw是能取到的 代码基本上是对的,结果也对
我把psw字段改成byte[]就可以正确的取出来了,为啥char[]就是不行呢?? [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string psw; 这种方式就可以,gb2312的可以解析出来结果不对啊,char数组一直取不到值。不过byte数组我又测试了下,psw是能取到的 代码基本上是对的,结果也对
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string psw; 这种方式就可以,gb2312的可以解析出来结果不对啊,char数组一直取不到值。不过byte数组我又测试了下,psw是能取到的 代码基本上是对的,结果也对
结果不对啊,char数组一直取不到值。不过byte数组我又测试了下,psw是能取到的 代码基本上是对的,结果也对
代码基本上是对的,结果也对
Pack = 4 这个可能最好改成Pack=1,除非你确定对方是按4字节对齐的。 结构里有整数,你确定一下Mac OS下的字节序,不过两端都在同一平台下也无所谓
那就不能直接struct和byte[]互相转了,你需要按照各个字段的长度分别处理
用string接收byte[](字符串编码的)时,是按照SizeConst-1或者遇到\0处理的。 你把byte[]转为struct,用char[]对应byte[]倒是也行,也能接收。 但是在你把Struct转为IntPtr时,就不一样了。Char[]的字段,指定了SizeConst,那么Char[]的长度和字节数都是SizeConst值,这在Char[]里只有ASCII码字符时也没问题,但是如果Char[]里有汉字时,就不对了。