4-character literal

Bill Baxter dnewsgroup at billbaxter.com
Thu Jan 25 23:43:17 PST 2007


Rick Mann wrote:
> Rick Mann Wrote:
> 
>> enum : uint
>> {
>>     kSomeConstantValue = 'abcd'
>> }
> 
> 
> I realized I was misunderstanding something else I saw, and that "abcd"d doesn't do what I thought (make a 4-byte character).
> 
> So: how to I do the equivalent of 'abcd'?
> 
> Thanks!

Interesting question.  How's this?

import std.stdio;

template touint(char[] T)
{
     static assert(T.length==4, "Integer constants must be of length 4");
     const uint touint =
         (cast(char)T[0] << 24)|
         (cast(char)T[1] << 16)|
         (cast(char)T[2] << 8)|
         (cast(char)T[3]);
}

enum
{
     kSomeConstantValue = touint!("xyzz")
}

void main()
{
     writefln("%x", kSomeConstantValue);
}




More information about the Digitalmars-d mailing list