Chuyển đổi nhanh cơ số trong C#

Hôm nay ngồi ở cty, đi thực tập, chưa làm gì nhiều nên tranh thủ ngồi đọc document tùm lum thể loại để trau dồi kiến thức. Thật ra không có earphones thôi, chứ có là tôi ngồi nghe nhạc cho sướng tấm thân. =))))

Đùa thôi, tính tôi hay tò mò đủ thứ nên đọc document biết đâu lại phát hiện cái hay để vọc.

Và quả thật, trong lúc hóng hớt ở MSDN của Microsoft, tôi phát hiện ra một cái hay của phương thức Convert.ToString() quen thuộc. Một dạng overload của nó giúp chuyển đổi qua lại giữa các cơ số nhanh hơn bao giờ hết, mà không cần phải ngồi code tay ra các hàm chuyển đổi.

Dĩ nhiên, cách này chỉ sử dụng khi đã thành thạo và nắm được ý tưởng chuyển đổi các hệ cơ số rồi, chứ nếu mới chỉ biết lập trình mà dùng cách này làm bài tập, nộp, thì ăn trứng ngỗng là cái chắc =))))

Thế mới biết tại sao nhập môn lập trình luôn thuộc về anh C/C++ haha…

Ta quan sát cấu trúc overload của Convert.ToString()

public static string ToString(
	int value,
	int toBase
)

Trong đó, sử dụng 2 tham số chính là value và toBase.

Giá trị value là số nguyên có dấu 32-bit cần được chuyển đổi.

Giá trị toBase để chỉ định ra cho máy tính biết hệ cơ số mà nó cần chuyển đổi đối với con số value. Giá trị toBase chỉ chấp nhận các giá trị 2, 8, 10 hoặc 16 mà thôi.

Giá trị trả về của overload này là kiểu chuỗi, không phải giá trị số.

Cụ thể, để hiểu rõ, ta quan sát các ví dụ sau đây.

int value = 9;
string binary = Convert.ToString(value,2);
Console.WriteLine("Binary value of {0} is: {1}",value,binary);

binary.JPG

Ta thu được giá trị nhị phân của số 9 (thập phân) là 1001.

Tiếp tục, ta quan sát ví dụ tiếp theo:

int value = 9;
string octal = Convert.ToString(value,8);
Console.WriteLine("Binary value of {0} is: {1}",value,octal);

octal.JPG

Giá trị 9 ở hệ bát phân sẽ là 11.

int value = 9;
string dec = Convert.ToString(value,10);
Console.WriteLine("Binary value of {0} is: {1}",value,dec);

Dĩ nhiên, hệ cơ số 10 của giá trị 9 vẫn là 9 thôi.

Cuối cùng, hệ số 16.

int value = 1000;
string hexa = Convert.ToString(value,16);
Console.WriteLine("Binary value of {0} is: {1}",value,hexa);

Để thử nghiệm với hệ thập lục phân, ta nên chọn số đầu vào value lớn lớn để thấy được giá trị.

hexa.JPG

Đối với phương thức Convert.ToString() thì nó có tổng cộng 36 overload. Cái tôi vừa nói chỉ là một overload mà thôi. Nếu muốn tìm hiểu hết, bạn có thể để dấu nháy vào ngay chỗ Convert.ToString() trong Visual Studio và nhấn phím F12. Lúc đó bạn sẽ thấy được toàn bộ 36 kiểu overload của nó.

VÕ TÌNH THƯƠNG

votinhthuong9@gmail.com

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s