转换为C++;到C#

转换为C++;到C#,c#,c++,C#,C++,在c++中: 在c#中 C#(一般来说)没有指针。也许以下是你想要的: byte des16[16]; [0] 207 'Ï' unsigned char [1] 216 'Ø' unsigned char [2] 108 'l' unsigned char [3] 93 ']' unsigned char [4] 249 'ù' unsigned char [5] 249 'ù' unsigned char [6] 100 'd' un

在c++中:

在c#中

C#(一般来说)没有指针。也许以下是你想要的:

byte des16[16];
    [0] 207 'Ï' unsigned char
    [1] 216 'Ø' unsigned char
    [2] 108 'l' unsigned char
    [3] 93 ']'  unsigned char
    [4] 249 'ù' unsigned char
    [5] 249 'ù' unsigned char
    [6] 100 'd' unsigned char
    [7] 0   unsigned char
    [8] 76 'L'  unsigned char
    [9] 50 '2'  unsigned char
    [10]    104 'h' unsigned char
    [11]    118 'v' unsigned char
    [12]    104 'h' unsigned char
    [13]    191 '¿' unsigned char
    [14]    171 '«' unsigned char
    [15]    199 'Ç' unsigned char

after
 byte *d = des16+8;
d = "L2hvh¿«Ç†¿æ^ òÎL2hvh¿«Ç"
这段代码为您提供了索引8处的元素

如果我读对了代码,那么您正在尝试获取索引8处元素的地址。一般来说,这在C#中是不可能的(除非您使用了不安全的代码)。

C#(一般来说)没有指针。也许以下是你想要的:

byte des16[16];
    [0] 207 'Ï' unsigned char
    [1] 216 'Ø' unsigned char
    [2] 108 'l' unsigned char
    [3] 93 ']'  unsigned char
    [4] 249 'ù' unsigned char
    [5] 249 'ù' unsigned char
    [6] 100 'd' unsigned char
    [7] 0   unsigned char
    [8] 76 'L'  unsigned char
    [9] 50 '2'  unsigned char
    [10]    104 'h' unsigned char
    [11]    118 'v' unsigned char
    [12]    104 'h' unsigned char
    [13]    191 '¿' unsigned char
    [14]    171 '«' unsigned char
    [15]    199 'Ç' unsigned char

after
 byte *d = des16+8;
d = "L2hvh¿«Ç†¿æ^ òÎL2hvh¿«Ç"
这段代码为您提供了索引8处的元素

如果我读对了代码,那么您正在尝试获取索引8处元素的地址。一般来说,这在C#中是不可能的(除非使用不安全的代码)

除非使用不安全代码,否则无法检索指针


除非使用不安全的代码,否则无法检索指针。

我认为这更合适(尽管这取决于d的使用方式):

注意:这将创建一个单独的数组实例,该数组包含des16中的项(前8项除外)

否则,如果不了解它是如何使用的,就不完全清楚什么是最佳用途

[编辑]

您可能正在.Net 2.0的缓冲区中使用以null结尾的字符串(如果
Skip()
不可用)。如果需要字符串表示,可以将其转换为本机字符串对象

byte[] d = des16.Skip(8).ToArray();

我认为这更合适(尽管这取决于d的使用方式):

注意:这将创建一个单独的数组实例,该数组包含des16中的项(前8项除外)

否则,如果不了解它是如何使用的,就不完全清楚什么是最佳用途

[编辑]

您可能正在.Net 2.0的缓冲区中使用以null结尾的字符串(如果
Skip()
不可用)。如果需要字符串表示,可以将其转换为本机字符串对象

byte[] d = des16.Skip(8).ToArray();

@杰斐多,谢谢你睁开我的眼睛

在c++中:

byte[] des16 = new byte[16];
char[] chararr = Array.ConvertAll(des16, delegate(byte b) { return (char)b; }); //convert to an array of characters
string str = new String(chararr, 8, chararr-8); //create the string
在c#中:


@杰斐多,谢谢你睁开我的眼睛

在c++中:

byte[] des16 = new byte[16];
char[] chararr = Array.ConvertAll(des16, delegate(byte b) { return (char)b; }); //convert to an array of characters
string str = new String(chararr, 8, chararr-8); //create the string
在c#中:


指针基本上正在被转换。我们可以将其更改为c#格式的集合

在C++中,如果需要将集合(字符串)更改为C中的字节[]集合,则可以执行如下代码。
byte[]toBytes=Encoding.ASCII.GetBytes(somestring)

指针基本上正在转换。我们可以将其更改为c#格式的集合

在C++中,如果需要将集合(字符串)更改为C中的字节[]集合,则可以执行如下代码。
byte[]toBytes=Encoding.ASCII.GetBytes(somestring)

是的,但这需要对C++-go-er.Point进行一些解释。我应该详细说明一下。谢谢大家,但还是不行System.Array不包含“Skip”的定义。为True,但这需要对C++-go-er.Point进行一些解释。我应该详细说明一下。谢谢大家,但还是不行System.Array不包含“跳过”的定义。谢谢大家,但仍然不是它。谢谢大家,但仍然不是它。谢谢大家,但仍然不是它。谢谢大家,但仍然不是它。
byte[] des16 = new byte[16];
char[] chararr = Array.ConvertAll(des16, delegate(byte b) { return (char)b; }); //convert to an array of characters
string str = new String(chararr, 8, chararr-8); //create the string
byte des16[16]; 
byte *d = des16+8; 
byte[] des16 = new byte[16];
byte[] b = new byte[8];
System.Array.Copy(des16, 8, b, 0, 8);