2014-12-07 34 views
0

我想把一个C++代码到C#中,在我的C++代码,我使用的是公共密钥使用这样的硬编码值测试:是否有在C#中的任意字节数组常量

static unsigned char PubKeyModulus[] = { 
"\xCA\x68\x77\....." 
"\x17\x55\x79\..." 
"\xF5\xD2\...." 
"\x2B\xE4\..." 
"\x7F\xC5\..." 
"\xEA\x19\..." 
"\x83\x67\..." 
"\x68\xEF\..." 
"\x57\x72\..." 
"\x0F\xE5\..." 
"\xD0\xBD\..." 
"\x21\x21\..." 
"\x11\x63\..." 
"\x05\xFB\..." 
"\x44\x7A\..." 
"\xD3\x19\..." 
}; 

如何我可以在C#代码中使用这个值吗?

+0

可能的重复[如何将字节数组转换为十六进制字符串,反之亦然?](http://stackoverflow.com/questions/311165/how-do-you-convert-byte-array-to-hexadecimal (字符串反之亦然) – 2014-12-07 21:44:49

+0

[C#中多行字符串文字]的可能重复(http://stackoverflow.com/questions/1100260/multiline-string-literal-in-c-sharp) – 2014-12-07 21:46:52

回答

1

请注意,虽然char是C++中的单字节类型,但它是C#中的双字节类型。你想在C#中使用byte

至于具体的问题,不会有以下工作吗?

static readonly byte PubKeyModulus[] = { 
0xCA, 0x68, 0x77, ... 
0x17, 0x55, 0x79, ... 
0xF5, 0xD2, ... 
0x2B, 0xE4, ... 
0x7F, 0xC5, ... 
0xEA, 0x19, ... 
0x83, 0x67, ... 
0x68, 0xEF, ... 
0x57, 0x72, ... 
0x0F, 0xE5, ... 
0xD0, 0xBD, ... 
0x21, 0x21, ... 
0x11, 0x63, ... 
0x05, 0xFB, ... 
0x44, 0x7A, ... 
0xD3, 0x19, ... 
}; 

如果不是(凡...由多个字节值,当然更换),请解释原因。

+0

这是mothode的签名在C++ 'extern __declspec(dllexport) int CardAuthenticate( IN const unsigned char * PubAuthKey, IN unsigned int PubAuthKeySize); ' @PeterSmith我试过你的解决方案,但它不工作。 这是我在我的C#代码 '[的DllImport( “MYDLL.DLL”)]的方法调用 公共静态外部的Int32 CardAuthenticate(字节[]数据,REF INT CleSize);' – leonidas79 2014-12-08 00:38:25

+1

声明一个'字节[] '数据结构不同于通过互操作将它传递给一些非托管代码。如果上述内容解决了关于如何执行声明的问题,但是您仍然有关于如何传递该声明的问题,则应接受此问题并发布一个新问题,显示您尝试过的内容,解释它做了什么以及与之不同你想要什么。 – 2014-12-08 00:49:41

相关问题