在 C 中使用截止从 int 转换为 char

标签 c

我需要在 C 中将 int 转换为 unsigned char。如果 int > 255 char 将为 255,如果 in < 0 char 将为 0。否则 char 等于 int。我如何在 C 中做到这一点?

我试过:

int i;
unsigned char c;
c = (unsigned char) i;

但它还没有起作用(它环绕,即 c = i % 256)。

最佳答案

只需编写您想要的代码即可。

unsigned char convert(int j)
{
    if (j >= 255) return 255;
    if (j < 0) return 0;
    return (unsigned char) j;
}

这可能会执行得更好(在我的机器上,6 条指令,没有分支),尤其是当大多数值都在 0-255 范围内时:

unsigned char convert(int j)
{
    unsigned char j2 = (unsigned char) j;
    if (j == j2) return j2;
    return (j < 0) ? 0 : 255;
}

关于在 C 中使用截止从 int 转换为 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35639293/

相关文章:

c - 为什么 printf 打印的内容大于数组的大小?

c - 从 fgets 获取第一个单词

c - 缩小二维数组的大小并从中删除特定行

c - 超快舍入函数(PBC)

c - 当我按下键盘上的键时如何防止重复的字符

c - 如何在程序集中访问 C 结构值?

c - 为嵌套结构数组中的字段赋值

c - 如何在 C 中将动态指针数组初始化为 NULL?

c - 整数指针缓冲区跳过索引

从消息队列接收后无法使用shm_open