Giới thiệu
Buffer.SetByte(Array array, int index, byte value) gán giá trị byte tại vị trí byte index trong mảng. Làm việc trên byte level, không quan tâm kiểu phần tử.
Ví dụ cơ bản
int[] arr = { 3, 4, 12 }; // Mỗi int = 4 byte
Buffer.SetByte(arr, 3, 20); // Ghi byte 20 tại byte index 3 (byte cuối của arr[0])
Ví dụ hoàn chỉnh
using System;
public class Demo
{
public static void Main()
{
int[] arr = { 3, 4, 12 };
Console.WriteLine("Initial Array...");
for (int i = 0; i < Buffer.ByteLength(arr); i++)
Console.WriteLine(Buffer.GetByte(arr, i));
Buffer.SetByte(arr, 3, 20);
Console.WriteLine("New Array...");
for (int i = 0; i < Buffer.ByteLength(arr); i++)
Console.WriteLine(Buffer.GetByte(arr, i));
}
}
Kết quả
Initial Array... 3 0 0 0 4 0 0 0 12 0 0 0 New Array... 3 0 0 20 4 0 0 0 12 0 0 0
Giải thích kết quả
- Mảng int[3] = 12 byte (3 * 4).
- Số 3 = 0x00000003 (little-endian): byte 0=3, byte 1=0, byte 2=0, byte 3=0.
SetByte(arr, 3, 20)ghi 20 vào byte index 3 -> số 3 trở thành 0x00001403 = 5123 (little-endian).- Kết quả in ra byte level: byte 3 giờ là 20.
Lưu ý cực kỳ quan trọng
- SetByte làm hỏng dữ liệu kiểu số nếu không hiểu rõ endianness và biểu diễn bộ nhớ.
- Chỉ dùng khi: làm việc với raw byte buffer, serialization tùy chỉnh, interop native code.
- Với mảng byte[], an toàn:
Buffer.SetByte(byteArr, index, value). - Index tính bằng byte, không phải index phần tử.
Phương thức liên quan
Buffer.GetByte(array, index): Đọc byte.Buffer.ByteLength(array): Tổng số byte của mảng.Buffer.BlockCopy: Copy block byte.