how to print ubyte*

Jonathan M Davis via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Apr 30 01:11:27 PDT 2014


On Wed, 30 Apr 2014 07:27:23 +0000
brad clawsie via Digitalmars-d-learn
<digitalmars-d-learn at puremagic.com> wrote:

> hi, I'm back again with another openssl related question.
> 
> given this program
> 
> --------------
> 
>    import std.stdio;
>    import deimos.openssl.hmac;
>    import deimos.openssl.evp;
> 
>    void main() {
>        HMAC_CTX *ctx = new HMAC_CTX;
>        HMAC_CTX_init(ctx);
>        auto key = "123456";
>        auto s = "hello";
> 
>        auto digest = HMAC(EVP_sha1(),
>                           cast(void *) key,
>                           cast(int) key.length,
>                           cast(ubyte*) s,
>                           cast(int) s.length,
>                           null,null);
>    }
> 
> --------------
> 
> "digest" should be of type ubyte*
> 
> does anyone know how to print this out as ascii?

If you want to print a ubyte*, then you can do something like

auto str = cast(char[])digest[0 .. lengthOfDigest];
writeln(str);

Slicing the pointer results in an array, and you can cast ubyte[] to
char[], which will print as characters rather than their integral
values.

- Jonathan M Davis


More information about the Digitalmars-d-learn mailing list