我正在运行Python 2.7脚本,最近我在从float到uint8时遇到了这种转换问题,在uint8中,负值不是裁剪为0而是为256-值。
简化我的代码,看起来可能像这样
a = -72.0
b = np.array(a, dtype=np.uint8)
c = np.array(np.clip(a,0,255),dtype=np.uint8)
print 'a =',a, 'b =',b, 'c =', c
a = -72.0 b = 184 c = 0
我只是想了解为什么b未设置为0,而是将其翻转为256-72 = 184。 如果有人对我可以阅读的数据类型有一个解释或良好的链接,那将是很好的。
谢谢
答案 0 :(得分:0)
我相信我找到了自己的答案,它与二进制中有符号和无符号数字的解释方式有关。 因此,由于uint8,当我从有符号-72变为无符号时,它们在二进制级别都以相同的方式编写。只是其中一个读为-72而另一个为+184