66
Chương 2: Thao tác dữ liệu
Phương thức tĩnh
GetBytes
của lớp
BitConverter
cung cấp nhiều phiên bản nạp chồng cho
phép chuyển hầu hết các kiểu giá trị cơ bản sang mảng kiểu byte. Các kiểu được hỗ trợ là
bool
,
char
,
double
,
short
,
int
,
long
,
float
,
ushort
,
uint
, và
ulong
. Lớp
BitConverter
cũng
cung cấp các phương thức tĩnh cho phép chuyển các mảng kiểu byte thành các kiểu giá trị
chuẩn như
ToBoolean
,
ToUInt32
,
ToDouble
,... Ví dụ sau minh họa cách chuyển các giá trị
bool
và
int
thành mảng kiểu byte, và ngược lại. Đối số thứ hai trong
ToBoolean
và
ToUInt32
cho
biết vị trí (tính từ 0) trong mảng byte mà
BitConverter
sẽ lấy các byte kể từ đó để tạo giá trị
dữ liệu.
byte[] b = null;
// Chuyển một giá trị bool thành mảng kiểu byte và hiển thị.
b = BitConverter.GetBytes(true);
Console.WriteLine(BitConverter.ToString(b));
// Chuyển một mảng kiểu byte thành giá trị bool và hiển thị.
Console.WriteLine(BitConverter.ToBoolean(b,0));
// Chuyển một giá trị int thành mảng kiểu byte và hiển thị.
b = BitConverter.GetBytes(3678);
Console.WriteLine(BitConverter.ToString(b));
// Chuyển một mảng kiểu byte thành giá trị int và hiển thị.
Console.WriteLine(BitConverter.ToInt32(b,0));
Đối với kiểu
decimal
, lớp
BitConverter
không hỗ trợ, nên bạn phải sử dụng thêm
MemoryStream
và
BinaryWriter
.
// Tạo mảng kiểu byte từ giá trị decimal.
public static byte[] DecimalToByteArray (decimal src) {
// Tạo một MemoryStream làm bộ đệm chứa dữ liệu nhị phân.
using (MemoryStream stream = new MemoryStream()) {
// Tạo một BinaryWriter để ghi dữ liệu nhị phân vào stream.
using (BinaryWriter writer = new BinaryWriter(stream)) {
// Ghi giá trị decimal vào BinaryWriter/MemoryStream.
writer.Write(src);