【发布时间】:2020-04-12 08:55:18
【问题描述】:
假设我有一个看起来像这样的数组:{'0b00011000','0b10001000'}
如何将该数组中的每个元素转换为uint8_t,使其输出保持二进制格式。 (例如'0b10001000' == 0b10001000)。
有没有可以翻转这个的函数,还是我必须自己做函数?
附言我在投射时遇到“精度丢失”错误,当我绕过它时,它显然会丢失精度。
编辑:我最终发现使用位集而不是使用uint8_t。
【问题讨论】:
-
我认为char(8位有符号)在转换为8位无符号数据类型时不会失去精度
-
@muyustan 我认为如果编译器能够理解如何通过强制转换简单地从一种类型转换为另一种类型,那么它实际上会失去精度的问题更少,在这种情况下它不能并且如果它尝试你不会得到正确的结果。
-
@muyustan:那么,您认为编译器错误地告知精度有损失?请解释原因。我不明白。谢谢
-
@ArminMontigny 我不是专家,但是,如果我没有理解错误,对于标准 ASCII 字符,char 的整数值在 0 到 127 之间。扩展 ASCII 最多在 0 到 255 之间(如果它是无符号字符而不是字符)。因此,[0,255] 也是
uint8_t的范围,那么我认为它能够保存字符的值。 IF char 变量仅用于保存真实字符,而不是负值。 -
@FarhoodET 抱歉,这是新手。页面建议是把它放在下面作为答案,所以我做了