我不知道该怎么称呼这个,这使谷歌搜索变得更难.
比方说3,我有一个整数,并希望将其转换为11100000,即从最重要的位开始设置整数位数值的字节.
我猜它可以用:
byte result = 0;
for(int i = 8; i > 8 - 3; i--)
result += 2 ^ i;
Run Code Online (Sandbox Code Playgroud)
但有什么更快/更好,或者最好是.net中包含标准库?
Hen*_*man 11
int n = 3; // 0..8
int mask = 0xFF00;
byte result = (byte) (mask >> n);
Run Code Online (Sandbox Code Playgroud)
因为只有几种可能性,你可以只缓存它们:
// Each index adds another bit from the left, e.g. resultCache[3] == 11100000.
byte[] resultCache = { 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0XF8, 0xFC, 0xFE, 0xFF };
Run Code Online (Sandbox Code Playgroud)
如果你不小心试图获得n> 8的值,你也会得到一个异常而不是一个无声错误.
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |