struct to ubyte[]
hqs7636
2012-02-25
tomqyp 写道 hqs7636 写道 tomqyp 写道 呵呵 像d这类语言做这个是最爽的,把你的struct和ubyte[]放在同一个unite下就行了
这个人净整些没用的 简单办法把struct UserLogin对象强转成*ubyte就行了,考虑到D不建设用指针所以把它们放到一个unite里,我前天手机上的非要把所有过程一步步给出来才算用啊 (*^__^*) 嘻嘻……没当过新手吧,把关键代码写出来,知道的也就敲几下键盘,不知道的可一阵抓瞎了。。。 |
|
amanout
2012-02-26
import std.conv; import std.string; struct UserLogin { align(1): ushort ClientId; int AccectId; string LoginUid; string LoginPwd; // 序列化 string toString(){ return to!string(ClientId)~"|"~to!string(AccectId)~"|"~LoginUid~"|"~LoginPwd; } } // 解析 int parserUserLogin(string d,ref UserLogin a){ string[] re=split(d, "|"); if(re.length!=4) return 0; a.ClientId=to!(ushort)(re[0]); a.AccectId=to!(int)(re[1]); a.LoginUid=re[2]; a.LoginPwd=re[3]; return 1; } import std.stdio; import std.windows.charset; void main(){ UserLogin a={1,2,"aaaa","bbbbb"}; writeln(a); // --------------------- if(parserUserLogin("1|2|cccc|ddddd", a)){ writeln(a); } } |
|
flythink
2012-02-27
socket中用定长的字符数组比用字符串好
|
|
ww21xx
2012-02-27
说实话,太出乎我的意料了!这样的解析。。。从来没想到过。。。
另外如果用定长的char[长度]的话,在struct to ubyte[]的时候 转不了,,,不知是啥原因,我在外边问了下,那些老外建议我用google的pb。。。哎。。。 |
|
betty_betty2008
2012-02-27
这个贴子有用不?
http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.learn&article_id=32955 |
|
ww21xx
2012-02-27
betty_betty2008 写道 这个贴子有用不?
http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D.learn&article_id=32955 嗯,这个对的没的问题。。。 我现在主要问题是 ubyte[] to struct时,不知如何取struct中的 string 或者 char[] |
|
ww21xx
2012-02-27
其实 可以不用 new
|
|
ww21xx
2012-02-27
搞定了。。。哎。。。不过还是建议用PB,不然结构对齐麻烦的很。。。
|
|
hqs7636
2012-02-27
贴出来看看
|
|
ww21xx
2012-03-08
hqs7636 写道 贴出来看看
其实 我就是用了字符串定长 没有用string; 换句话说 char[长度] 替换 string,这样就可以了,走的还是C++方式! |