我不知道该怎么称呼这个,这使谷歌搜索更难。
我有一个整数,比如说3
,并希望将它转换为11100000
,也就是说,一个具有整数位数值的字节,从最重要的位开始。< / p>
我想可以用:
完成byte result = 0;
for(int i = 8; i > 8 - 3; i--)
result += 2 ^ i;
但是有什么更快/更好的,或者最好是.net中包含标准库吗?
答案 0 :(得分:11)
int n = 3; // 0..8
int mask = 0xFF00;
byte result = (byte) (mask >> n);
答案 1 :(得分:5)
因为只有几种可能性,你可以只缓存它们:
// Each index adds another bit from the left, e.g. resultCache[3] == 11100000.
byte[] resultCache = { 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0XF8, 0xFC, 0xFE, 0xFF };
如果你不小心试图获得n&gt;的值,你也会得到一个异常而不是一个无声错误。 8。