Đọ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
Cho em hỏi muốn chuyển một chuỗi Hex về lại dạng Text phải làm thế nào ạ.
Đây bạn nhé!
https://stackoverflow.com/questions/724862/converting-from-hex-to-string
Em không rành tiếng Anh lắm,bác chỉ code ví dụ giúp luôn được không ah.
Bạn dùng thử đoạn code này nhé:
static void Main()
{
byte[] data = FromHex(“47-61-74-65-77-61-79-53-65-72-76-65-72”);
string s = Encoding.ASCII.GetString(data); // GatewayServer
}
public static byte[] FromHex(string hex)
{
hex = hex.Replace(“-“, “”);
byte[] raw = new byte[hex.Length / 2];
for (int i = 0; i < raw.Length; i++) { raw[i] = Convert.ToByte(hex.Substring(i * 2, 2), 16); } return raw; } hoặc đoạn code này: public class HexadecimalEncoding { public static string ToHexString(string str) { var sb = new StringBuilder(); var bytes = Encoding.Unicode.GetBytes(str); foreach (var t in bytes) { sb.Append(t.ToString("X2")); } return sb.ToString(); // returns: "48656C6C6F20776F726C64" for "Hello world" } public static string FromHexString(string hexString) { var bytes = new byte[hexString.Length / 2]; for (var i = 0; i < bytes.Length; i++) { bytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16); } return Encoding.Unicode.GetString(bytes); // returns: "Hello world" for "48656C6C6F20776F726C64" } }
Trong bài viết đã có code, bạn còn muốn cái gì nữa?????!