Jump to page: 1 2
Thread overview
March 30, 2014

Bunu şu şekilde çok acemi ve berbat bir şekilde yapabiliyorum ama biraz daha temiz ve hızlı bir kod olsa fena olmazdı.

string s = "deneme";
string aa;
foreach(a; cast(ubyte[]) s){
	aa ~= (cast(void*) a).to!string;
}

Ali hocam bunu nasıl yapabiliriz?

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 30, 2014

Aynı şekilde tam tersini :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 31, 2014

Teşekkür ederim Ali hocam :)

3.yöntem göze daha hoş geliyor fakat kendi çözümümde ve o çözümde şöyle bir problem var.
Eğer dönüştürülen değer 0x9 ise bunu 09 olarak yazmak yerine 9 olarak yazıyor ve yapıyı bozuyor :(

Peki aynı şekilde hex i bine nasıl çevirmeliyiz sizce?

string hex2bin(string a){
	string b;
	for(int i; i < a.length; i+=2){
		b ~= a[i..i+2].to!ushort(16);
	}
	return b;
}

Şöyle basit acemice bir kod yazdım :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 31, 2014

Ufak bir ekleme yaptım sadece ve bu desen 00 olacak şeklinde 2li yazdırıyor "%(%02x%)" :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 30, 2014

Seninki güzel ama (void*) gibi ilgisiz bir türe bulaşmak garip geliyor. :) Eğer giriş binary ise ubyte dizisi kullanmak daha uygun olur.

  1. Sonucun girişin iki katı uzunlukta olacağını bildiği için .reserve'den yararlanan bir çözüm:
char[] binToHex(ubyte[] bin) pure
{
   char[] result;
   result.reserve(bin.length * 2);

   foreach (b; bin) {
       result ~= format("%0X", b);
   }

   return result;
}
  1. Aynı sonucu .reduce ile elde eden bir çözüm:
char[] binToHex(ubyte[] bin) pure
{
   return
       reduce!((sonuç, bayt) => sonuç ~= format("%0X", bayt))
       ((char[]).init, bin);
}
  1. Gruplama düzen belirteçlerini kullanan bir çözüm:
char[] binToHex(ubyte[] bin) pure
{
   import std.exception;
   string sonuç = format("%(%0X%)", bin);
   return assumeUnique(sonuç);
}

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 31, 2014

Benim hatam. Evet, bütün %0X'lerin %02X olması gerekiyordu.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

March 31, 2014

hex2bin de doğru görünüyor ama string'in UTF-8 kod dizisi olduğunu hatırlatırım. Herhangi binary veri depolamaya uygun değildir. Ben olsam 'ubyte[]' kullanırdım.

Benzer nedenle, neden to!ushort? to!ubyte daha mantıklı değil mi?

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 01, 2014

Sormadan edemeyeceğim x ile X arasında ne fark var?

Alıntı:

>

Benzer nedenle, neden to!ushort? to!ubyte daha mantıklı değil mi?

Evet haklısınız ubyte olması gerek sadece daha iyi bir çözümü vardır diye çok ellemedim makarna kod misali yazdım

String yapmamın sebebi kendi çalışmamda veriyi mysql den doğrudan çekiyorum tekrar cast işlemi ile uğraşmayayım diye string yaptım. UTF8 sorunu ile mysql de karşılaştım. ARSD kütüphanesi utf8 olması konusunda zorluyordu gerekli satırı sildim sorun kalmadı.

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 01, 2014

x ile X'in farkı, onaltılı çıktıda küçük veya büyük harf kullanılması: ff yerine FF gibi.

http://dlang.org/phobos/std_format.html#.formattedWrite

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 08, 2014

Hocam https://github.com/D-Programming-Language/phobos/blob/20833c3b947fc97a16fad84a0ad9a48c0b26309d/std/internal/math/biguintcore.d burada

toHexString, fromHexString fonksiyonları zaten tanımlanmış :)

Zekeriya

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

« First   ‹ Prev
1 2