md5 return toHexString

tcak via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Apr 24 10:56:58 PDT 2015


On Friday, 24 April 2015 at 17:50:03 UTC, AndyC wrote:
> Hi All, I cannot seem to understand whats wrong with this:
>
> // main.d
> import std.stdio;
> import std.digest.md;
> import std.file;
>
>
> string md5sum(const string fname)
> {
>     MD5 hash;
>
>     File f = File(fname, "rb");
>     foreach( ubyte[] buf; f.byChunk(4096))
>     {
>         hash.put(buf);
>     }
>
>     string s = toHexString!(LetterCase.lower)(hash.finish());
>     writeln(s);   //This is correct
>     return s;
> }
>
> void main()
> {
>     string crc = md5sum("main.d");
>     writeln(crc);  //This is garbage
> }
>
>
> The writeln in md5sum prints correctly, but the "return s" 
> seems to mess it up?  What's going on?
>
> Thanks for you time,
>
> -Andy

Just do that "return s.dup()". Then it works for me. That's 
probably due to the fact that s is in stack. But I am not sure 
how "toHexString" works.


More information about the Digitalmars-d-learn mailing list