字节0xea
在基数10中等于234.在python中,字节使用无符号整数表示,但在java中,它们是signed, two's complement integers。
例如,在Java中,如果我转换(byte)234
,我会得到带符号的整数-22
。当我在MessageDigest
中使用这些字节时,我获得与在python中使用unsigned 234
时相同的完全哈希输出。所以我相信这些代表相同的字节。
但是,在Clojure中,函数(byte 234)
应转换为-22
,而是抛出clojure.lang.RT.byteCast
异常。
如何在clojure中将整数转换为字节?
答案 0 :(得分:3)
当溢出时可以使用unchecked-byte
:
(unchecked-byte 234)
=> -22
仅供参考,也可以使用*unchecked-math*
绑定切换默认行为:
(set! *unchecked-math* true)
=> true
(byte 234)
=> -22
但您可能希望将此非默认行为限制在可能的最小范围内。