了解从python到float到np.uint8的转换

时间:2018-09-27 02:37:00

标签: python python-2.7 type-conversion

我正在运行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。 如果有人对我可以阅读的数据类型有一个解释或良好的链接,那将是很好的。

谢谢

1 个答案:

答案 0 :(得分:0)

我相信我找到了自己的答案,它与二进制中有符号和无符号数字的解释方式有关。 因此,由于uint8,当我从有符号-72变为无符号时,它们在二进制级别都以相同的方式编写。只是其中一个读为-72而另一个为+184