c - C语言循环6位

标签 c rotation mask bit

<分区>

我必须从文件中读取位掩码(6 位)才能激活 c 程序中的某些功能。 我是这样读掩码的:

char *val = "100111";
unsigned int mask;
char *endp = NULL;
mask = strtoul(val, &endp, 2);

无论如何,在这样做之后我必须旋转位读取:

掩码 = rol(掩码);

例如,如果我阅读这个序列:

100111

它会导致

111001

掩码总是 6 位长度。

我需要使用 msvc 和 gcc 实现 rol 函数。

谢谢。

最佳答案

这会有帮助吗?

unsigned int rol(unsigned int mask) {
    unsigned int ret = 0;
    unsigned int i;
    for (i = 0; i != 6; ++i) {
        ret |= ((mask >> i) & 0x01) << (5 - i);
    }
    return ret;
}

关于c - C语言循环6位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18329783/

相关文章:

c - 逐字反转字符串

ios - 尝试遮盖图像周围的圆圈不起作用

CSS 圆形 mask

c - 如何使用 libAV 库(ffmpeg)将 H264 编码数据放入 .mp4 等容器中?

C - getaddrinfo 返回 "Servname not supported for ai_socktype"

swift - Swift 中没有动画的初始 subview 旋转

android - 在android中滚动旋转 View

CSS 文本转换问题

javascript - 任何人都知道为什么在 XHTML 中没有类型属性 "text/css"的 &lt;style&gt; 问题在问题中是间歇性的?

c - printf() 的 %d 正在输出大整数。