如何对这个C++;C#中的函数?
我在C++中有以下函数:如何对这个C++;C#中的函数?,c#,c++,C#,C++,我在C++中有以下函数: void put8At ( unsigned char *b, int pos, int v ) { union { short a; unsigned char b[2]; } u; u.a = v; b += pos; *b = v & 0xff; } 您将如何用C#编写此代码?以下是我将如何用C++编写此代码: void put8At ( unsigned char *b,
void put8At ( unsigned char *b, int pos, int v )
{
union
{
short a;
unsigned char b[2];
} u;
u.a = v;
b += pos;
*b = v & 0xff;
}
您将如何用C#编写此代码?以下是我将如何用C++编写此代码:
void put8At ( unsigned char *b, int pos, int v )
{
b[pos] = v & 0xff;
}
现在,这可能更容易翻译成C。我想你应该试着自己做。你如何证明更改的合理性?我对这件事很陌生,这不是我的代码。。。你能解释一下为什么不好吗?你是新手,你选择这样一个clusterf*/$作为例子?你知道你的代码是做什么的吗?仅供参考,Martinho发布的示例与您最初拥有的有所不同。&0xff总是发生在他的代码的最后8位,对于你的代码,它让pos上的位通过。@Anton我不知道你想说什么,但你错了。我发布的代码与问题中的代码具有相同的可观察行为。也许您可以发布一个例子,说明两者的行为不同?@typedeftypename:the
u.a=v代码>行写入不再使用的局部变量。所以我放弃了它,也放弃了整个工会宣言b[pos]
等于*(b+pos)
,所以我替换b+=pos*b…
只需使用b[pos]
(不需要分配给b,因为它是本地的,在此之后从未使用过)。