Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何对这个C++;C#中的函数?_C#_C++ - Fatal编程技术网

如何对这个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,

我在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, 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,因为它是本地的,在此之后从未使用过)。