digitalmars.D - [submision] std.md5
- =?utf-8?B?RGF3aWQgQ2nEmcW8YXJraWV3aWN6?= (47/47) Sep 29 2005 I couldn't find function to to get string from digest so I wrote one. If...
I couldn't find function to to get string from digest so I wrote one. If I haven't duplicated something already created, please consider commiting this little path. Regards, --- /usr/include/phobos/std/md5.d 2005-09-29 17:26:02.000000000 +0200 +++ md5.d 2005-09-29 22:45:11.000000000 +0200 -354,6 +354,29 foreach (ubyte u; digest) printf("%02x", u); } +/* Convert digest to printable form + */ + +char[] digestToString(ubyte digest[16]) +{ + char[] ret = new char[32]; + for (int i = 31, j = 15; i > 0; i--, j--) + { + ret[i] = (digest[j] & 0x0f); + if (ret[i] > 9) + ret[i] += 'a' - 10; + else + ret[i] += '0'; + + i--; + ret[i] = (digest[j] & 0xf0) >> 4; + if (ret[i] > 9) + ret[i] += 'a' - 10; + else + ret[i] += '0'; + } + return ret; +} unittest { -383,6 +406,8 "1234567890123456789012345678901234567890" "1234567890123456789012345678901234567890"); assert(digest == cast(ubyte[])x"57edf4a22be3c955ac49da2e2107b67a"); - + + assert(digestToString(cast(ubyte[16])x"c3fcd3d76192e4007dfb496cca67e13b") + == "c3fcd3d76192e4007dfb496cca67e13b"); } -- Dawid Ciężarkiewicz
Sep 29 2005