Tôi đã viết lớp của riêng mình để chuyển đổi các nguyên mẫu chuẩn C# thành các mảng byte.Chức năng GetBytes hoạt động như thế nào?
Sau đó, tôi đã xem một lớp học BitConverter
source để xem các chuyên gia đã làm như thế nào.
mã ví dụ của tôi:
public static byte[] getBytes(short value) {
byte[] bytes = new byte[2];
bytes[0] = (byte)(value >> 8);
bytes[1] = (byte)value;
return bytes;
}
BitConverter mã lớp:
public unsafe static byte[] GetBytes(short value)
{
byte[] bytes = new byte[2];
fixed(byte* b = bytes)
*((short*)b) = value;
return bytes;
}
Tại sao chức năng của họ được gắn thẻ như không an toàn và sử dụng khai thác cố định?
Lỗi chức năng như vậy có dễ bị xảy ra ngay cả khi chúng sử dụng không an toàn không? Tôi có nên bỏ mỏ và sử dụng chúng không? Đó là hiệu quả hơn?
Các chức năng này làm những việc khác nhau: Trước đây sử dụng phần lớn endian, cuối cùng là native endian. – CodesInChaos