Merhaba,
Önceki başlıktan devam...
D'de kolaylık olsun diye gerek binary (0b000_1111: bu kalkabilir!), gerekse hexadecima(0x0000_FFFF: bunu konuşcaz) hazır değerler (literal) kullanabiliyoruz. Hatta daha ileri gidip bellek tahsis etmeden, (belki katma ve şablonlarınızda kullanmak üzere) string karşılığını üretmek mümkün:
import core.internal.string;
char[20] buf;
auto neBu = 123456789.unsignedToTempString(buf[]);
assert(neBu == "123456789");
assert(is(typeof(neBu) == char[]));
assert(neBu.length == 9);
auto aynısı = 0x075bcd15.unsignedToTempString(buf[]);
assert(neBu == aynısı);
assert(0x075bcd15 == 123456789);
Sayı tabanını unsignedToTempString!16
şeklinde değiştirip farklı sonuçlar almak da mümkün. Başka örnekler için buraya bakabilrsiniz:
https://github.com/dlang/dmd/blob/master/druntime/src/core/internal/string.d
Konumuz dışı ama D hakkında soru işaret kalmasın. Octal sayılar ise karışıklık olabileceği için std.conv.octal
'daki şablonu şu şekilde üzerine bastırarak kullanılıyor:
import std.conv : octal;
assert(octal!100 == 0x40);
Dip Not: Başlıktaki -literal için "hazır bilgi" gibi bir Türkçe çeviri yapabiliriz ya da kısaca kelimesi kelimesine diyebiliriz.