问题描述
以下为c++代码://将srcstr字符串的每一个字符异或0x9421之后,赋值给deststrvoidsimpleEncode_cpp(stringsrcstr,string&deststr){for(inti=0;i<srcstr.length();i++){deststr[i]=srcstr[i]^0x9421;}return;}某一字符串src经过两次simpleEncode_cpp()处理可以还原为原来的字符串值。同样某一字符串str经过simpleEncode_c_sharp()两次处理之后也可以还原为原来的值,但是本来在A机器经过simpleEncode_cpp()处理之后的字符串发送到B机器,再用simpleEncode_c_sharp()处理,却还原不了,是不是c++和c#字符串中的字符所占4个字节的高低位序不同?voidsimpleEncode_c_sharp(stringstr,refStringBuildersb){for(inti=0;i<sb.Length;++i){/*begin:以下这种方式和sb[i]=(char)((ushort)str[i]^0x9421);的方式有区别吗?//inta=System.Convert.ToInt16(str[i])^0x9421;//sb[i]=System.Convert.ToChar(a);end*/sb[i]=(char)((ushort)str[i]^0x9421);}}因此,求等价simpleEncode_cpp()的等价c#代码,急求,谢谢!
解决方案
解决方案二:
刚开始用c#,工作中急待解决这个问题!!,怎么没人回答,谢谢!
解决方案三:
望高人解答,万分感谢!
解决方案四:
都好几天了,怎么没一个人回答?
解决方案五:
帮顶~
解决方案六:
你C++下字符串ABC做过一次处理后的字符串是什么?
解决方案七:
你C++下字符串"ABC"做过一次处理后的字符串是什么?
解决方案八:
参考staticvoidMain(string[]args){stringsrcstr="slfysfslfnslf";stringdeststr=string.Empty;simpleEncode_c_sharp(srcstr,refdeststr);Console.WriteLine(deststr);simpleEncode_c_sharp(deststr,refdeststr);Console.WriteLine(deststr);}staticvoidsimpleEncode_c_sharp(stringsrcstr,refstringdeststr){StringBuildersb=newStringBuilder();foreach(charcinsrcstr){sb.Append(Convert.ToChar((int)c^0x9421));}deststr=sb.ToString();}/*输出:鑒鑍鑇鑘鑒鑇鑒鑍鑇鑏鑒鑍鑇slfysfslfnslf*/
解决方案九:
在C#中调试通过privatestringPro(stringoriginStr){List<char>rets=newList<char>();for(inti=0;i<originStr.Length;i++){rets.Add((char)((int)originStr[i]^0x9421));}returnnewstring(rets.ToArray());}