2009-09-28 64 views
10

Tôi có yêu cầu tạo tệp nhật ký sysDesk. Trong yêu cầu này, tôi phải tạo một tệp XML, ở một số nơi nhất định giữa các phần tử chứa ký tự null nhị phân.Ký tự null nhị phân là gì?

Ai đó có thể giải thích cho tôi trước hết, ký tự null nhị phân là gì và tôi có thể viết một tệp vào một tệp văn bản như thế nào?

+0

Chỉ cần làm rõ, bạn muốn nó là một số loại tệp đặc biệt và _not_ một tệp XML được định dạng tốt? –

+0

@ Henk, cấu trúc trông giống như XML, nhưng nó sẽ được tiêu hóa bởi SyDesk, vì vậy tôi nghĩ rằng bạn là chính xác, nó sẽ không được hình thành tốt. –

Trả lời

26

Tôi nghi ngờ điều đó có nghĩa là Unicode U + 0000. Tuy nhiên, đó là not a valid character in an XML file ... bạn sẽ thấy nếu bạn có thể nhận được một đặc điểm kỹ thuật rất rõ ràng về định dạng tệp để tìm ra những gì thực sự cần thiết. file mẫu cũng sẽ có ích :)

Comments đang thất bại tôi vào lúc này, vì vậy để giải quyết một vài câu trả lời khác:

  • Nó không phải là một nhân vật chấm dứt chuỗi trong C#, như C# không sử dụng các chuỗi bị vô hiệu. Trong thực tế, tất cả các chuỗi .NET null bị chấm dứt vì lợi ích của interop, nhưng quan trọng hơn là độ dài được lưu trữ độc lập. Đặc biệt, một C# chuỗi có thể hoàn toàn hợp lệ bao gồm một ký tự null mà không chấm dứt nó:

    string embeddedNull = "a\0b"; 
    Console.WriteLine(embeddedNull.Length); // Prints 3 
    
  • Phương pháp do rwmnau để có được một ký tự null hoặc chuỗi là rất không hiệu quả cho một cái gì đó đơn giản. Tốt hơn sẽ là:

    string justNullString = "\0"; 
    char justNullChar = '\0'; 
    
+0

Xin chào Jon, nếu bạn có cơ hội, điều đó có nghĩa là tôi không cần phải xác định rõ ràng một terminator null, bởi vì tất cả các chuỗi C# đã được vô hiệu hóa? –

+1

JL: chuỗi C# có thể bị vô hiệu hóa * trong bộ nhớ * vì lợi ích của interop (ít nhất là trên MS CLR), nhưng chúng không bị chấm dứt về các ký tự mà bạn thực sự có thể nhận được. Cho dù bạn có cần xác định một cách rõ ràng hay không sẽ phụ thuộc vào những gì bạn đang cố gắng làm - nếu bạn đang cố gắng phân định chuỗi, bạn sẽ cần * một số loại phân cách. –

10

Một ký tự null nhị phân chỉ là một char với một giá trị số nguyên/ASCII là 0.

Bạn có thể tạo một ký tự null với Convert.ToChar(0) hoặc phổ biến hơn, cũng công nhận '\0'.

+0

Hoặc chỉ 'var x = (char) 0;'; –

2

Ký tự NULL nhị phân là một trong số đó là tất cả các số 0 (0x00 trong Hex). Bạn có thể viết:

System.Text.Encoding.ASCII.GetChars(new byte[] {00}); 

để tải xuống trong C#.

2

Các ký tự null là nhân vật đặc biệt đó là đại diện bởi U + 0000 (mã hóa bởi all-zero bit). Ký tự null được biểu diễn bằng C# theo trình tự thoát \0, như trong "This string ends with a null character.\0".

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