猿问

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

我正在运行 Python 2.7 脚本,最近我在从浮点数到 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。如果有人对我可以阅读的数据类型有一个解释或一个好的链接,那就太好了。


幕布斯6054654
浏览 641回答 1
1回答

一只萌萌小番薯

我相信我找到了自己的答案,这与如何以二进制解释有符号数和无符号数有关。因此,当我由于 uint8 而从有符号 -72 变为无符号时,它们都以相同的方式在二进制级别写入。只是一个读数为-72,另一个读数为+184
随时随地看视频慕课网APP

相关分类

Python
我要回答