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

5
2741

Đọc document ở trang 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.

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);

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);

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

Tiếp tục với hệ thập phân (hệ cơ số 10):

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ị. Thử nghiệm với giá trị value = 1000 khi chuyển đổi sang số thập lục phân sẽ là 3E8.

Đố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

5 COMMENTS

This site uses Akismet to reduce spam. Learn how your comment data is processed.