小编Eri*_*ric的帖子

将按位操作从C#移植到C

我需要一些帮助将这个C#代码移植到C.我已经在C#中工作了很好但是我在C中得到了错误的返回.我应该将这个位分解成单独的行吗?我以为我的数据类型有问题,但我认为我有正确的数据类型.这是返回0x03046ABE的工作代码

  UInt32 goHigh(UInt32 x) { return (UInt32)(x & 0xFFFF0000); }          
  UInt32 goLow(UInt32 x) { return (UInt32)(x & 0xFFFF); } 

  UInt32 magic(UInt32 pass){
      UInt32 key = pass;
      UInt16 num = 0x0563;
      key = (goLow(key) << 16) | (UInt16)(((num >> 3) | (num << 13)) ^ (goHigh(key) >> 16));
      return key; //returns 0x03046ABE

   }

  magic(0x01020304);
Run Code Online (Sandbox Code Playgroud)

这是我正在努力工作的错误C代码

  unsigned long  goHigh(unsigned long  x) { 
         return (unsigned long )(x & 0xFFFF0000); }          
  unsigned long  goLow(unsigned long  x) { 
         return (unsigned long )(x & 0xFFFF); } …
Run Code Online (Sandbox Code Playgroud)

c c# bit-manipulation bit-shift bitwise-operators

3
推荐指数
1
解决办法
82
查看次数

标签 统计

bit-manipulation ×1

bit-shift ×1

bitwise-operators ×1

c ×1

c# ×1