Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
July 23, 2015 Converting uint[] slice to string for the purpose of hashing? | ||||
---|---|---|---|---|
| ||||
1. Is the best way to hash a uint[] slice 2. How do you do it? |
July 23, 2015 Re: Converting uint[] slice to string for the purpose of hashing? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Enjoys Math | On Thursday, 23 July 2015 at 11:15:46 UTC, Enjoys Math wrote:
> 1. Is the best way to hash a uint[] slice
>
> 2. How do you do it?
IIRC, std.digest functions take ubyte[] as input, so to hash a uint[] I would do the following:
void main(string[] args)
{
import std.conv;
import std.digest.md;
int[] a = [1, 2, 3, 4, 5];
auto md5 = new MD5Digest();
md5.put(a.to!(ubyte[]));
auto hash = md5.finish();
writeln(hash);
}
|
July 23, 2015 Re: Converting uint[] slice to string for the purpose of hashing? | ||||
---|---|---|---|---|
| ||||
Posted in reply to cym13 | On Thursday, 23 July 2015 at 11:49:05 UTC, cym13 wrote: > On Thursday, 23 July 2015 at 11:15:46 UTC, Enjoys Math wrote: >> 1. Is the best way to hash a uint[] slice >> >> 2. How do you do it? > > IIRC, std.digest functions take ubyte[] as input, so to hash a uint[] I would do the following: > > void main(string[] args) > { > import std.conv; > import std.digest.md; > > int[] a = [1, 2, 3, 4, 5]; > auto md5 = new MD5Digest(); > > md5.put(a.to!(ubyte[])); > > auto hash = md5.finish(); > writeln(hash); > } Thanks. That worked. Here's my code: module hashtools; import std.conv; import std.digest.md; string uintSliceToHash(const uint[] slice) { auto md5 = new MD5Digest(); md5.put(slice.to!(ubyte[])); return md5.finish().to!(string); } unittest { import std.stdio; uint[] slice = [1,2,3,4]; writeln(uintSliceToHash(slice)); } |
July 23, 2015 Re: Converting uint[] slice to string for the purpose of hashing? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Enjoys Math | On Thursday, 23 July 2015 at 12:10:04 UTC, Enjoys Math wrote:
> On Thursday, 23 July 2015 at 11:49:05 UTC, cym13 wrote:
>> [...]
>
> Thanks. That worked. Here's my code:
>
> module hashtools;
> import std.conv;
> import std.digest.md;
>
> string uintSliceToHash(const uint[] slice) {
> auto md5 = new MD5Digest();
> md5.put(slice.to!(ubyte[]));
> return md5.finish().to!(string);
> }
>
> unittest {
> import std.stdio;
> uint[] slice = [1,2,3,4];
> writeln(uintSliceToHash(slice));
> }
Actually, uint[] seems to be hashable:
import std.stdio;
int[uint[]] aa;
aa[[1,2,3]] = 5;
writeln(aa[[1,2,3]]);
WORKS
|
July 23, 2015 Re: Converting uint[] slice to string for the purpose of hashing? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Enjoys Math | All types are hashable and for your own structs and classes you can redefine opHash |
July 23, 2015 Re: Converting uint[] slice to string for the purpose of hashing? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Temtaime | On Thursday, July 23, 2015 12:56:13 Temtaime via Digitalmars-d-learn wrote:
> All types are hashable and for your own structs and classes you can redefine opHash
It's toHash, actually, but yeah.
- Jonathan M Davis
|
Copyright © 1999-2021 by the D Language Foundation