设置给定位数的整数到字节

时间:2011-11-27 17:42:25

标签: c# .net

我不知道该怎么称呼这个,这使谷歌搜索更难。

我有一个整数,比如说3,并希望将它转换为11100000,也就是说,一个具有整数位数值的字节,从最重要的位开始。< / p>

我想可以用:

完成
byte result = 0;
for(int i = 8; i > 8 - 3; i--)
    result += 2 ^ i;

但是有什么更快/更好的,或者最好是.net中包含标准库吗?

2 个答案:

答案 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。