繁体   English   中英

c ++ wchar数组到c#

[英]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);

所以我有两个问题:

  1. wsSerial是C ++中的一个数组,但我不需要在C#中使用数组,是吗? 我的意思是,它只是存储一个大数字,后来转换成数值,对吗?
  2. 这到底是做什么的? wcscpy_s(WSS2,MAX_PATH,wsSerial + 8)。 + 8让我失望。

在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM