看看这个密码

 h = (c >> 4) & 0xf;
 l = c & 0xf;
 printf(h + 'x');

如何将此代码转换为C#?

最佳答案

printf是完全错误的,您试图从一个整数中生成一个指针而不使用强制转换,而且您肯定不想将该数字强制转换为常量字符*。假设要打印假定的无符号整数。相当于:

System.Console.WriteLine(120 + (c / 16));

或者说迂腐:
UInt32 h = (c >> 4) & 0xF;
System.Console.WriteLine('x' + h);

我要注意的是,位操作是不需要的,任何一个像样的编译器都会为您这样做。
UInt32 h = c / 16;
System.Console.WriteLine(120 + h);

l变量甚至不在代码中使用,但在C中它将是:
UInt32 l = c & 0xF;

更准确地说是:
UInt32 l = c % 16;

10-04 12:25