【发布时间】:2019-05-21 06:24:14
【问题描述】:
我正在使用此函数将表示为布尔数组的 8 位二进制数转换为整数。它有效率吗?我在嵌入式系统中使用它。它运行良好,但如果有的话,我对一些改进(或替换)的意见或建议感兴趣。
uint8_t b2i( bool *bs ){
uint8_t ret = 0;
ret = bs[7] ? 1 : 0;
ret += bs[6] ? 2 : 0;
ret += bs[5] ? 4 : 0;
ret += bs[4] ? 8 : 0;
ret += bs[3] ? 16 : 0;
ret += bs[2] ? 32 : 0;
ret += bs[1] ? 64 : 0;
ret += bs[0] ? 128 : 0;
return ret;
}
【问题讨论】:
-
如果代码工作那么在codereview.stackexchange.com上会更好
-
您是否将其确定为瓶颈?在那之前,不要打扰。
-
我的直觉是,如果您因此而遇到性能问题,那么真正的问题在于数据结构的选择。
-
如果传递的数组实际上少于 8 个元素,您期望会发生什么?
标签: c data-conversion