[英]c++ wchar array to c#
我不了解C ++,我必须将一些代码转换为C#。 我已经设法做了一些,但我真的不明白如何转换几行,所以我在这里寻求帮助。
这是C ++代码:
WCHAR wsSerial[MAX_PATH]={'\0'};
WCHAR wsS2[MAX_PATH]={'\0'};
wcscpy_s(wsSerial, MAX_PATH, m_strSerial);
wcscpy_s(wsS2,MAX_PATH,wsSerial+8);
wsS2[8]=NULL;
ULONG ulCode2 = wcstoul(wsS2, NULL,10);
这就是我在C#中所拥有的:
string wsSerial;
string wsS2;
wsSerial = mSerial; //an external input
wsS2 = wsSerial + 8;
wsS2= wsSerial.Substring(0, 8);
long ulCode2 = long.Parse(wsS2);
所以我有两个问题:
在C中,字符串只是一个包含字符串“字符串”的连续区域,以特殊字符结尾。 换句话说,一个char
数组。 (或者wchar_t
用于宽字符串。)
在C#(和C ++)中,这不是必需的,因为它有自己的特殊string
类型,它处理幕后的数组内容。
关于+8
东西,它只是在复制时跳过wsSerial
的前八个字符。 要理解这一点,您应该阅读“指针算术”。
看起来你几乎都在那里,但是在调用中的第一个参数
wsSerial.Substring()
应该是8,第二个应该是MAX_PATH减去8。
就像这样:
string wsSerial = mSerial;
string wsS2 = wsSerial.Substring(8, 8);
long ulCode2 = long.Parse(wsS2);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.