我需要一些帮助将这个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)