【发布时间】:2017-06-12 20:01:57
【问题描述】:
我最近开始在 scala 中工作,需要创建 MD5 的实现。我的理解是 MD5 需要无符号类型,而 scala 没有。由于我将很快开始使用确实有无符号类型的 Chisel,因此我决定实现它的库。到目前为止一切看起来都很好,除了在执行以下按位运算时,我的 F 值变为 -271733879,这会导致错误“由:java.lang.IllegalArgumentException:要求失败:UInt 文字 -271733879 为负”,因为 UInts 不能消极。
if(i<16){
F = ((B & C) | ((~B) & D))
g = i
}
错误消息还有更多内容,但只是由于此错误而出现错误的不同库和类的跟踪列表,因此我没有发布它,因为我认为它不重要。如果是,我可以编辑并发布所有内容。
我的 B、C 和 D 值等于下面列出的小写等效值,这是第一次通过 for 循环,因此它们尚未更新。
var a0 : UInt = UInt(0x67452301)
var b0 : UInt = UInt(0xefcdab89)
var c0 : UInt = UInt(0x98badcfe)
var d0 : UInt = UInt(0x10325476)
任何帮助将不胜感激。
【问题讨论】:
标签: scala md5 negative-number chisel uint