2014-04-09 25 views
5

Ok, tôi đã thấy nhiều câu hỏi tương tự ở đây và các diễn đàn thống nhất hỏi về việc chuyển đổi từ định dạng này sang định dạng khác. Tôi đã có một (hy vọng) câu hỏi đơn giản mà tôi chỉ không thể tìm thấy câu trả lời cho. Tôi đang sử dụng plugin trung tâm trò chơi từ Prime31 để xử lý trò chơi nhiều người chơi theo lượt. Bên trong các plugin cho Prime31 họ yêu cầu bạn cho một byte [] để gửi cho người chơi khác. (Dữ liệu nhà nước) Vì vậy, câu hỏi là, những gì sẽ là một cách tốt để chuyển đổi một danh sách thành một mảng byte và sau đó chuyển đổi chúng trở lại từ mảng byte?chuyển đổi từ điển hoặc danh sách thành byte []

để tham khảo điều này phức tạp như một lớp như tôi cần, tôi có thể cần phải thêm các thành viên khác sau, nhưng không phải bất kỳ loại nào khác. CSONG danh sách của int (thẻ trong tay) có thể dễ dàng là 4 int riêng biệt nếu điều đó làm cho việc chuyển đổi danh sách PokerPlayers thành một byte [] dễ dàng hơn. Cũng trong danh sách này không phải là độ dài được đặt nhưng sẽ luôn là 4-8.

public class PokerPlayer{ 
    public string playerID; 
    public string alias; 
    public int wildCard; 
    public List<int> cardsInHand; 
    public int chips; 
} 

Tôi cảm thấy như khi tôi nhìn thấy câu trả lời tôi sẽ smack bản thân mình vì đã không nhìn thấy những câu trả lời sớm. Bất kỳ con trỏ/liên kết đến các tài liệu có liên quan sẽ được ngọt ngào, tôi đã tìm kiếm google cho một 3 giờ tốt bây giờ với tương tự (SO tương tự) nhưng không hoàn toàn cùng một câu hỏi.

+0

Câu hỏi, bạn chỉ cần danh sách được đưa vào một mảng hay toàn bộ đối tượng PokerPlayer nên được chuyển đến một nơi khác? – flohack

+0

Những gì tôi đang làm là cố gắng chuyển đổi danh sách các PokerPlay thành một byte [] để gửi qua không gian qua gamecenter. – Grindz

Trả lời

20

Bạn có thể muốn thử serialization.

var binFormatter = new BinaryFormatter(); 
var mStream = new MemoryStream(); 
binFormatter.Serialize(mStream, myObjToSerialize); 

//This gives you the byte array. 
mStream.ToArray(); 

Và sau đó nếu bạn muốn bật các mảng byte trở thành một đối tượng:

var mStream = new MemoryStream(); 
var binFormatter = new BinaryFormatter(); 

// Where 'objectBytes' is your byte array. 
mStream.Write (objectBytes, 0, objectBytes.Length); 
mStream.Position = 0; 

var myObject = binFormatter.Deserialize(mStream) as YourObjectType; 
+0

Tuyệt vời đây là con đường để đi, tôi đã phải google nhận được danh sách trở lại từ mảng byte, nhưng nó dẫn tôi đến câu trả lời đúng. Cảm ơn rất nhiều. – Grindz

1

Chuyển đổi dữ liệu vào dòng byte (và ngược lại) được gọi serialization (và deserialization).

Bạn có thể sử dụng lớp BinaryFormatter để làm như vậy.

Các vấn đề liên quan