tôi đang tạo ra một GUID như thế nàyGuid Byte Order trong .NET
Guid g = new Guid(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xA, 0xB, 0xC, 0xD, 0xE, 0xF });
Console.WriteLine(g);
này kết quả đầu ra
03020100-0504-0706-0809-0a0b0c0d0e0f
Theo Wikipedia có được bốn phần trong guid và điều này giải thích tại sao việc chuyển đổi trật tự byte trong bốn nhóm. Tuy nhiên bài viết trên Wikipedia cũng nói rằng tất cả các phần được lưu trữ ở định dạng Big Endian. Rõ ràng ba phần đầu tiên không phải là Big Endian. Phương thức GetBytes() của guid trả về các byte theo cùng thứ tự được sử dụng để tạo. Giải thích cho hành vi này là gì?
Theo Wikipedia (tôi đã không kiểm tra các tài liệu tham khảo) các tiêu chuẩn UUID trong đó GUID được cho là thực hiện nói rằng các bộ phận nên được mã hóa trong Big Endian. Cả thông số UUID và GUID đều xác định rằng có bốn phần kích thước 4, 2, 2 và 8 byte theo thứ tự này. – Stilgar
Thật vậy, và khi hiển thị phần 8 byte cuối cùng thường được hiển thị là 2bytes-6bytes - cả hai đều xuất hiện chính xác là lớn endian (như được hiển thị là ví dụ của bạn). – Grhm
Vâng 8 byte cuối cùng được hiển thị là 2-6 trong biểu diễn chuỗi có thể vì lý do dễ đọc nhưng chúng là một phần của cùng một phần dữ liệu. Câu hỏi thực sự là nếu Guid vi phạm tiêu chuẩn hoặc có một số giải thích khác. – Stilgar