Arsip

Posts Tagged ‘C#’

Explicit Keyword in C++

I am trying to do more C++ lately (after 7-8 years). Ouch, I am feeling old now. I am finding something new (or perhaps refinding). I will try post about it regulary here. So, here we go my first post:

It’s about explicit keyword. This keywords is used to prevent an implicit convertion when creating an object. See this example:

class String {
public:
    String(int n); // allocate n bytes to the String object
    String(const char *p); // initializes object with char *p
};

Then if you call

String a = '3';

It will implicitly converted ‘3’ to integer, and create String object with 3 bytes allocation. Here, we need the explicit keywords. Like this:

class String {
public:
    explicit String(int n); // allocate n bytes to the String object
    String(const char *p); // initializes object with char *p
};

By doing this, we prevent the ‘3’ to be converted to int, rather it will create String object that has char *p = ‘3’.

 

Reference: http://stackoverflow.com/questions/121162/what-does-the-explicit-keyword-mean-in-c

Iklan
Kategori:CPP Tag:

Big Endian vs Little Endian

17 April 2011 1 komentar

Saya menemukan problem ini ketika mengerjakan tugas Kriptografi untuk implementasi SHA atau Secure Hash Algorithm. Ada beberapa macam SHA, bisa dilihat di sini. Sebenarnya, cukup mudah melakukan implementasinya, untuk algoritmanya, bisa googling, atau langsung cari di wikipedia. Namun, ternyata rada sulit untuk konversi dari integer atau char ke bit. Hal ini dikarenakan terdapat 2 mode di komputer dalam menyimpan data. Yakni, big endian dan little endian.

Lalu, apa hubungan SHA dengan si big dan little endian ini? Masalah muncul ketika SHA meminta kita merubah integer ke suatu representasi bit dengan mode big-endian, sedangkan tidak semua komputer merepresentasikannya menjadi big endian. OS Windows biasanya menggunakan little endian sebagai modenya.

Perbedaan little endian dan big endian sebenarnya sangat sepele, kalau big-endian representasi bit nya mirip tulisan kita, yakni makin ke kiri, makin signifikan bitnya. Sedangkan little endian sebaliknya. Contoh :

00001001 = 9 (big endian)

00001001 = 144 (little endian)

Sebenarnya, cukup dibalik saja. Namun, untuk setiap tipe data, menggunakan banyak byte yang berbeda, Contoh, boolean 1 byte, char 1 byte, int 1 byte, dan seterusnya. Sehingga perlu ada konversi masing-masing.

Jadi, yang harus diperhatikan adalah :

  1. Mode apa yang digunakan komputer kita, big endian atau little endian
  2. Tipe data apa yang ingin kita ubah

Berikut ini contoh kerjaan saya : Baca selanjutnya…

Kategori:C#, Kriptografi Tag:,
%d blogger menyukai ini: