January 27, 2005 md5 + coupling | ||||
---|---|---|---|---|
| ||||
Speaking of coupling, as we were a short while ago, I note that the md5 module has a printDigest() function, which uses printf(). Is there really any good reason for this method, and its inherent coupling to printf()? It seems pointless to me, since the impl of printDigest() is simply void printDigest(ubyte digest[16]) { foreach (ubyte u; digest) printf("%02x", u); } ??? |
January 27, 2005 Re: md5 + coupling | ||||
---|---|---|---|---|
| ||||
Posted in reply to Matthew | On Fri, 28 Jan 2005 09:55:50 +1100, Matthew <admin@stlsoft.dot.dot.dot.dot.org> wrote: > Speaking of coupling, as we were a short while ago, I note that the md5 > module has a printDigest() function, which uses printf(). Is there > really any good reason for this method, and its inherent coupling to > printf()? It seems pointless to me, since the impl of printDigest() is > simply > > void printDigest(ubyte digest[16]) > { > foreach (ubyte u; digest) > printf("%02x", u); > } AFAIKS there is no reason for it using printf instead of placing the information into a char[]. My hash code in Deimos uses this function to output all the different digests from all the various hashing methods: # template hexStringT(T) # { # char[] hexStringT(T d) # { # char[] result; # # if (d.length != 0) { # typeof(d[0]) u; # uint sz = u.sizeof*2; # uint ndigits = 0; # # result = new char[sz*d.length]; # for(int i = d.length-1; i >= 0; i--) { # u = d[i]; # for(; u; u /= 16) { # result[result.length-1-ndigits] = hexdigits[u & 15]; # ndigits++; # } # for(; ndigits < (d.length-i)*sz; ndigits++) # result[result.length-1-ndigits] = '0'; # } # } # # return result; # } # } # # char[] toHexString(ubyte[] array) # { # return hexStringT!(typeof(array))(array); # } # # char[] toHexString(ulong[] array) # { # return hexStringT!(typeof(array))(array); # } # # char[] toHexString(uint[] array) # { # return hexStringT!(typeof(array))(array); # } Regan |
Copyright © 1999-2021 by the D Language Foundation