2014-12-07 18 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

相關問題