Add BinaryReaderExtensions and BinaryWriterExtensions#7
Conversation
Agent-Logs-Url: https://github.com/Tyrrrz/PowerKit/sessions/0aa92876-570f-42a2-a73c-473c63bca82e Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Tyrrrz/PowerKit/sessions/0aa92876-570f-42a2-a73c-473c63bca82e Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Ports null-terminated string / padding-related BinaryReader and BinaryWriter extensions (and tests) into PowerKit.
Changes:
- Added
BinaryReaderExtensions.SkipZeroes(long? maxSkipLength = null)andReadNullTerminatedString(). - Added
BinaryWriterExtensions.WriteNullTerminatedString(string value). - Added unit tests for the new extensions.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| PowerKit/Extensions/BinaryWriterExtensions.cs | Adds null-terminated string writing extension for BinaryWriter. |
| PowerKit/Extensions/BinaryReaderExtensions.cs | Adds zero-padding skipping and null-terminated string reading extensions for BinaryReader. |
| PowerKit.Tests/BinaryWriterExtensionsTests.cs | Verifies null-terminated string writing behavior. |
| PowerKit.Tests/BinaryReaderExtensionsTests.cs | Verifies zero skipping and null-terminated string reading behavior. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…ngth Agent-Logs-Url: https://github.com/Tyrrrz/PowerKit/sessions/4857a41b-e210-434e-884d-3fead0073bfb Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com>
… terminator Agent-Logs-Url: https://github.com/Tyrrrz/PowerKit/sessions/62d27cd8-554b-40bf-82b1-42b9ba1ac2a0 Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com>
| /// </summary> | ||
| public void SkipZeroes(long? maxSkipLength = null) | ||
| { | ||
| if (!reader.BaseStream.CanSeek) |
There was a problem hiding this comment.
Can we use Peek to avoid relying on seeking? @copilot
There was a problem hiding this comment.
Done in 7cab462. SkipZeroes now uses PeekChar() to look ahead before consuming a byte — no seeking at all. The CanSeek guard, BaseStream.Length, and Seek(-1, Current) are all gone. The bounded variant tracks a skipped counter instead of comparing stream positions. The NonSeekableStream test and helper class were also removed since they're no longer relevant.
Agent-Logs-Url: https://github.com/Tyrrrz/PowerKit/sessions/dd3f95b2-2f0a-462e-848d-bdaba68b13dc Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com>
| writer.WriteNullTerminatedString("hello"); | ||
|
|
||
| // Assert | ||
| stream.ToArray().Should().Equal((byte)'h', (byte)'e', (byte)'l', (byte)'l', (byte)'o', 0); |
Agent-Logs-Url: https://github.com/Tyrrrz/PowerKit/sessions/434b423f-0d43-44f6-b251-d42db9b252e6 Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com>
Agent-Logs-Url: https://github.com/Tyrrrz/PowerKit/sessions/bf97db13-97ae-4ccd-828d-ae7598e5f854 Co-authored-by: Tyrrrz <1935960+Tyrrrz@users.noreply.github.com>
Ports
BinaryReaderandBinaryWriterextension methods from Tyrrrz/Ressy.New extensions
BinaryReaderExtensionsSkipZeroes(long? maxSkipLength = null)— advances past zero bytes, optionally boundedReadNullTerminatedString()— reads chars until\0, returns the accumulated stringBinaryWriterExtensionsWriteNullTerminatedString(string value)— writes each char then a null terminator