1

给定在底层运行时生成的一些Hash值,我如何修改或访问该哈希的各个字节?

4

1 回答 1

4

Hash特征Output具有AsRefAsMut特征,允许您将哈希作为字节片( )进行交互[u8]

pub trait Hash: 'static + MaybeSerializeDebug + Clone + Eq + PartialEq {
    type Output: Member + MaybeSerializeDebug + AsRef<[u8]> + AsMut<[u8]>;

    // ... removed for brevity
}

在散列上使用as_ref()oras_mut()将返回一个字节切片,您可以正常使用:

例如:

// Iterate over a hash
let hash1 = <T as system::Trait>::Hashing::hash(1);
for hash_byte in hash1.as_ref().iter() {
    // ... do something
}

或者

// Add one to the first byte of a hash
let mut hash2 = <T as system::Trait>::Hashing::hash(2);
hash2.as_mut()[0] += 1;
于 2019-01-14T09:19:10.837 回答