{"id":20003161,"url":"https://github.com/alec1o/byter","last_synced_at":"2025-04-13T06:13:47.711Z","repository":{"id":64861686,"uuid":"579011548","full_name":"alec1o/Byter","owner":"alec1o","description":"Byter: C# library for serializing and deserializing data to and from bytes, supporting unlimited complexity and depth.⚡","archived":false,"fork":false,"pushed_at":"2025-02-11T01:20:59.000Z","size":672,"stargazers_count":10,"open_issues_count":3,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-13T06:13:36.180Z","etag":null,"topics":["alec1o","byter","c-sharp","csharp","decode","deserializer","dotnet","encode","netly","object","parser","primitive","serialization","serialize","serializer"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alec1o.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-16T12:44:49.000Z","updated_at":"2025-03-28T08:04:39.000Z","dependencies_parsed_at":"2023-12-08T00:21:54.987Z","dependency_job_id":"3526b9f6-9537-4664-b145-da18de59138b","html_url":"https://github.com/alec1o/Byter","commit_stats":{"total_commits":50,"total_committers":1,"mean_commits":50.0,"dds":0.0,"last_synced_commit":"9f96cd894a5d32f82c126ddace286fff370fec94"},"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alec1o%2FByter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alec1o%2FByter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alec1o%2FByter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alec1o%2FByter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alec1o","download_url":"https://codeload.github.com/alec1o/Byter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248670435,"owners_count":21142904,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alec1o","byter","c-sharp","csharp","decode","deserializer","dotnet","encode","netly","object","parser","primitive","serialization","serialize","serializer"],"created_at":"2024-11-13T05:24:28.625Z","updated_at":"2025-04-13T06:13:47.692Z","avatar_url":"https://github.com/alec1o.png","language":"C#","readme":"\u003cdiv align=\"right\"\u003e\n\u003ctable\u003e\n\u003ctd aligh=\"right\"\u003e\n\u003cp\u003e\u003c/p\u003e\n\u003csup\u003e⭐ Your star is the light at the end of our tunnel.\u003cbr\u003e Lead us out of the darkness by starring \u003ca href=\"https://github.com/alec1o/Byter\"\u003eByter on GitHub\u003c/a\u003e.\u003cbr\u003e Star me please, I beg you! 💙\u003c/sup\u003e\n\u003c/td\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\u003cbr\u003e\n\n\u003ch1 align=\"center\"\u003e\u003ca href=\"https://github.com/alec1o/Byter\"\u003eByter\u003c/a\u003e\u003c/h1\u003e\n\n\u003ch6 align=\"center\"\u003e\u003csub\u003e\npowered by \u003ca href=\"https://github.com/alec1o\"\u003eALEC1O\u003c/a\u003e\u003csub/\u003e\n\u003c/h6\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"#\"\u003e\n    \u003cimg align=\"center\" src=\"static/logo/Byter-logo-512/sprite_1.png\" width=\"128px\" alt=\"byter logo\"\u003e\n  \u003c/a\u003e\n\u003c/div\u003e\n\n##### Project\n\n\u003e \u003csub\u003eGet basic information about this project called [Byter](https://github.com/alec1o/Byter)\u003c/sub\u003e\n\n\u003ctable\u003e\n\u003ctr\u003e\n  \u003cth align=\"center\" valign=\"center\"\u003e\u003csub\u003e\u003cstrong\u003eOverview\u003c/strong\u003e\u003c/sub\u003e\u003c/th\u003e\n\u003ctd\u003e\n\u003cbr\u003e\n\u003csub\u003e\u003ci\u003e\u003cstrong\u003eByter\u003c/strong\u003e\u003c/i\u003e is a C# serialization library for primitive data types, including booleans, numbers, chars, enums, strings, DateTime, BigInteger, bytes, and complex types like classes, structs, arrays, and lists, supporting unlimited complexity and depth.\u003c/sub\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n  \u003cth align=\"center\" valign=\"center\"\u003e\u003csub\u003e\u003cstrong\u003eWebsite\u003c/strong\u003e\u003c/sub\u003e\u003c/th\u003e\n\u003ctd\u003e\n\u003cbr\u003e\n\u003csub\u003eRepository: \u003ca href=\"https://github.com/alec1o/Byter\"\u003e\u003ci\u003egithub.com/alec1o/byter\u003c/i\u003e\u003c/a\u003e\u003c/sub\u003e\u003cbr\u003e\n\u003cbr\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003cth align=\"center\" valign=\"center\"\u003e\u003csub\u003e\u003cstrong\u003eContributions\u003c/strong\u003e\u003c/sub\u003e\u003c/th\u003e\n\u003ctd\u003e\n\u003cbr\u003e\n\u003csub\u003e\n\nThanks a lot \u003c3 \n\u003cbr\u003e\u003cbr\u003e\n\u003cdiv\u003e\n  \u003cimg src=\"https://github.com/vanhaodev.png\" width=\"24\" height=\"24\"\u003e \u003ca href=\"https://github.com/vanhaodev\"\u003e@vanhaodev\u003c/a\u003e\n  \u0026nbsp;\n  \u003cimg src=\"https://github.com/nvh2001.png\" width=\"24\" height=\"24\" style=\"border-radius:50%\"\u003e \u003ca href=\"https://github.com/nvh2001\"\u003e@nvh2001\u003c/a\u003e\n\u003c/div\u003e\n\n\u003c/sup\u003e\n\u003cbr\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cbr\u003e\n\n##### Installing\n\n\u003e \u003csub\u003eOfficial publisher\u003c/sub\u003e\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003cth valign=\"center\" align=\"center\"\u003e\u003csub\u003eNuget\u003c/sub\u003e\u003c/th\u003e\n\u003cth valign=\"center\" align=\"center\"\u003e\u003csub\u003e.NET CLI\u003c/sub\u003e\u003c/th\u003e\n\u003cth valign=\"center\" align=\"center\"\u003e\u003csub\u003eNetly\u003c/sub\u003e\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd valign=\"top\" align=\"left\"\u003e\n\n\u003ch6\u003e\u003csup\u003eInstall on \u003ca href=\"https://www.nuget.org/packages/Byter\"\u003eNuget\u003c/a\u003e\u003c/sup\u003e\u003c/h6\u003e\n\n\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"left\"\u003e\n\n```rb\ndotnet add package Byter --version 4.0.0\n```\n\n\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"left\"\u003e\n\n\u003ch6\u003e\u003csup\u003eEmbedded, \u003ca href=\"https://github.com/alec1o/Netly\"\u003eSince version 2.x.x\u003c/a\u003e\u003c/sup\u003e\u003c/h6\u003e\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cbr\u003e\n\n##### Versions\n\n\u003e \u003csub\u003eNotable changes\u003c/sub\u003e\n\n\u003ctable\u003e\n\u003ctr\u003e \u003c!-- title --\u003e\n\u003cth\u003e\u003csub\u003ev1.x.x\u003c/sub\u003e\u003c/th\u003e\n\u003cth\u003e\u003csub\u003ev2.x.x\u003c/sub\u003e\u003c/th\u003e\n\u003cth\u003e\u003csub\u003ev3.x.x\u003c/sub\u003e\u003c/th\u003e\n\u003cth\u003e\u003csub\u003ev4x.x\u003c/sub\u003e\u003c/th\u003e\n\u003c/tr\u003e\n\u003ctr\u003e \u003c!-- status --\u003e\n\u003ctd valign=\"center\" align=\"center\"\u003e\u003csup\u003e\u003csub\u003e\u003ci\u003eStable\u003c/i\u003e\u003c/sub\u003e\u003c/sup\u003e\u003c/td\u003e\n\u003ctd valign=\"center\" align=\"center\"\u003e\u003csup\u003e\u003csub\u003e\u003ci\u003eStable\u003c/i\u003e\u003c/sub\u003e\u003c/sup\u003e\u003c/td\u003e\n\u003ctd valign=\"center\" align=\"center\"\u003e\u003csup\u003e\u003csub\u003e\u003ci\u003eStable\u003c/i\u003e\u003c/sub\u003e\u003c/sup\u003e\u003c/td\u003e\n\u003ctd valign=\"center\" align=\"center\"\u003e\u003csup\u003e\u003csub\u003e\u003ci\u003eStable\u003c/i\u003e\u003c/sub\u003e\u003c/sup\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e \u003c!-- row #1 --\u003e\n\u003ctd valign=\"top\" align=\"left\"\u003e\n\u003csub\u003e\n\u003ci\u003eMain (Reader \u0026 Writer)\u003c/i\u003e Types:\n\u003cbr\u003e\n\u0026nbsp; \u003ccode\u003ebyte\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003ebool\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003ebyte[]\u003c/code\u003e\n\u003cbr\u003e\n\u0026nbsp; \u003ccode\u003eshort\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003eushort\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003eint\u003c/code\u003e\n\u003cbr\u003e\n\u0026nbsp; \u003ccode\u003euint\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003elong\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003eulong\u003c/code\u003e\n\u003cbr\u003e\n\u0026nbsp; \u003ccode\u003efloat\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003edouble\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003echar\u003c/code\u003e\n\u003cbr\u003e\n\u0026nbsp; \u003ccode\u003estring\u003c/code\u003e\n\u003c/sub\u003e\n\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"left\"\u003e\n\u003csub\u003e\nNew \u003ci\u003e(Reader \u0026 Writer)\u003c/i\u003e Types:\n\u003cbr\u003e\u0026emsp;\u003ccode\u003eFloat2\u003c/code\u003e (Vector2)\n\u003cbr\u003e\u0026emsp;\u003ccode\u003eFloat3\u003c/code\u003e (Vector3)\n\u003cbr\u003e\u0026emsp;\u003ccode\u003eFloat4\u003c/code\u003e (Vector4 / Quaternion)\n\u003c/sub\u003e\n\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"left\"\u003e\n\u003csub\u003e\nBug Fix. \u003ci\u003e\u003cstrong\u003e(Reader \u0026 Writer)\u003c/strong\u003e\u003c/i\u003e\n\u003cbr\u003e\u003cbr\u003eSupport: \u003ci\u003e\u003cstrong\u003e*Primitive\u003c/strong\u003e\u003c/i\u003e\n\u003cbr\u003e\u003cbr\u003eNew usage paradigms \u003ci\u003e\u003cstrong\u003e*Primitive\u003c/strong\u003e\u003c/i\u003e\n\u003cbr\u003e\u003cbr\u003e*Primitive Types:\n\u003cbr\u003e\n\u0026nbsp; \u003ccode\u003ebool\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003ebyte\u003c/code\u003e\n\u003cbr\u003e\n\u0026nbsp; \u003ccode\u003echar\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003eshort\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003eushort\u003c/code\u003e\n\u003cbr\u003e\n\u0026nbsp; \u003ccode\u003eint\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003euint\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003efloat\u003c/code\u003e\n\u003cbr\u003e\n\u0026nbsp; \u003ccode\u003elong\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003ebyte[]\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003eulong\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003edouble\u003c/code\u003e\n\u003cbr\u003e\n\u0026nbsp; \u003ccode\u003estring\u003c/code\u003e\n\u003cbr\u003e\n\u0026nbsp;\u0026nbsp;\u0026nbsp;\u003ci\u003e*highlights\u003c/i\u003e\n\u003cbr\u003e\n\u0026nbsp; \u003ccode\u003eenum*\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003esbyte*\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003eDateTime*\u003c/code\u003e\n\u003cbr\u003e\n\u0026nbsp; \u003ccode\u003edecimal*\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003eclass*\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003estruct*\u003c/code\u003e\n\u003cbr\u003e\n\u0026nbsp; \u003ccode\u003earray*\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003elist*\u003c/code\u003e\n\u0026nbsp; \u003ccode\u003eBigInteger*\u003c/code\u003e\n\u003c/sub\u003e\n\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"left\"\u003e\n\u003csub\u003e\nBug Fix. \u003ci\u003e\u003cstrong\u003e(Primitive \u0026 Extension)\u003c/strong\u003e\u003c/i\u003e\n\u003cbr\u003e\u003cbr\u003eSupport: \u003ci\u003e\u003cstrong\u003e*Concat Bytes\u003c/strong\u003e\u003c/i\u003e\n\u003cbr\u003e\u003cbr\u003eFix. \u003ci\u003eCompilation warning.\u003c/i\u003e\n\u003c/sub\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e \u003c!-- row #2 --\u003e\n\u003ctd valign=\"top\" align=\"left\"\u003e\u003csub\u003eUsed by. \u003ca href=\"https://github.com/alec1o/Netly\"\u003eNetly v2\u003c/a\u003e\u003c/sub\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"left\"\u003e\u003csub\u003eUsed by. \u003ca href=\"https://github.com/alec1o/Netly\"\u003eNetly v3\u003c/a\u003e\u003c/sub\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"left\"\u003e\u003csub\u003eUsed by. \u003ca href=\"https://github.com/alec1o/Netly\"\u003eNetly v4\u003c/a\u003e\u003c/sub\u003e \u003csup\u003e\u003ci\u003e(under dev stage)\u003c/i\u003e\u003c/sup\u003e\u003c/td\u003e\n\u003ctd valign=\"top\" align=\"left\"\u003e\u003csub\u003eUsed by. \u003ca href=\"https://github.com/alec1o/Netly\"\u003eNetly v4\u003c/a\u003e\u003c/sub\u003e\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cbr\u003e\n\n##### Usage\n\n\u003e \u003csub\u003eIntegration and interaction example codes\u003c/sub\u003e\n\n\n\u003ctable\u003e\n\n\u003ctr\u003e\n\u003cth align=\"center\" valign=\"top\"\u003e\u003csub\u003e\u003cstrong\u003ev1.x.x\u003cbr\u003ev2.x.x\u003c/strong\u003e\u003c/sub\u003e\u003c/th\u003e\n\u003ctd\u003e\n\n\u003cdetails\u003e\u003csummary\u003e📄 \u003cstrong\u003e\u003csup\u003e\u003csub\u003eWriter\u003c/sub\u003e\u003c/sup\u003e\u003c/strong\u003e\u003c/summary\u003e\n\n### Constructor\n\n- ###### () :                      ``Writer`` \u003cbr\u003e\u003csub\u003eCreate instance with empty internal buffer\u003c/sub\u003e\n- ###### (``Writer`` writer) :     ``Writer`` \u003cbr\u003e\u003csub\u003eCreate instance and copy buffer of \u003ci\u003e(Writer)\u003c/i\u003e as internal buffer\u003c/sub\u003e\n- ###### (ref ``Writer`` writer) : ``Writer`` \u003cbr\u003e\u003csub\u003eCreate instance and copy buffer of \u003ci\u003e(ref Writer)\u003c/i\u003e as internal buffer\u003c/sub\u003e\n\n### Proprieties\n\n- ###### Length :   ``int`` \u003cbr\u003e\u003csub\u003eReturn buffer length.\u003c/sub\u003e\n\n### Methods\n\n- ###### Write(T value) :   ``void`` \u003cbr\u003e\u003csub\u003eWrite content in internal buffer\u003c/sub\u003e\n- ###### GetBytes() :     ``byte[]`` \u003cbr\u003e\u003csub\u003eReturn buffer from \u003ci\u003e(Writer)\u003c/i\u003e instance as \u003ci\u003ebyte[])\u003c/i\u003e \u003c/sub\u003e\n- ###### GetList() :  ``List\u003cbyte\u003e`` \u003cbr\u003e\u003csub\u003eReturn buffer from \u003ci\u003e(Writer)\u003c/i\u003e instance as \u003ci\u003eList\u0026lt;byte\u0026gt;\u003c/i\u003e \u003c/sub\u003e\n- ###### Clear():           ``void`` \u003cbr\u003e\u003csub\u003eClear internal buffer from \u003ci\u003e(Writer)\u003c/i\u003e instance\u003c/sub\u003e\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003e📄 \u003cstrong\u003e\u003csup\u003e\u003csub\u003eReader\u003c/sub\u003e\u003c/sup\u003e\u003c/strong\u003e\u003c/summary\u003e\n\n### Constructor\n\n- ###### (``byte[]`` buffer) :     ``Reader`` \u003cbr\u003e\u003csub\u003eCreate instance using \u003ci\u003e(Byte[])\u003c/i\u003e as internal buffer\u003c/sub\u003e\n- ###### (``Writer`` writer) :     ``Reader`` \u003cbr\u003e\u003csub\u003eCreate instance using \u003ci\u003e(Writer)\u003c/i\u003e as internal buffer\u003c/sub\u003e\n- ###### (ref ``Writer`` writer) : ``Reader`` \u003cbr\u003e\u003csub\u003eCreate instance using \u003ci\u003e(ref Writer)\u003c/i\u003e as internal buffer\u003c/sub\u003e\n\n### Proprieties\n\n- ###### Success : ``bool`` \u003cbr\u003e\u003csub\u003eReturn true if deserialized successful.\u003c/sub\u003e\n- ###### Position : ``int`` \u003cbr\u003e\u003csub\u003eReturn current read index.\u003c/sub\u003e\n- ###### Length :   ``int`` \u003cbr\u003e\u003csub\u003eReturn buffer length.\u003c/sub\u003e\n\n### Methods\n\n- ###### Seek(``int`` position) :                    ``void`` \u003cbr\u003e\u003csub\u003eMove position (internal buffer index)\u003c/sub\u003e\n- ###### Read\u003c``T``\u003e() :                                ``T`` \u003cbr\u003e\u003csub\u003eRead content from iternal buffer.\u003c/sub\u003e\n- ###### Read\u003c``string``\u003e(``Encoding`` encoding) : ``string`` \u003cbr\u003e\u003csub\u003eRead custom encoding string.\u003c/sub\u003e\n\n\u003c/details\u003e\n\u003cdetails\u003e\u003csummary\u003e📄 \u003cstrong\u003e\u003csup\u003e\u003csub\u003eExample\u003c/sub\u003e\u003c/sup\u003e\u003c/strong\u003e\u003c/summary\u003e\n\n- ###### Writer\n    ```csharp\n    using Byter;\n    \n    Writer w = new();\n    \n    // write data\n  \n    w.Write(\"Powered by ALEC1O\");\n    w.Write(\"由 ALEC1O 提供支持\", Encoding.UTF32);\n    w.Write((int)1000000);` // 1.000.000\n    w.Write((char)'A');\n    w.Write((long)-1000000000); // -100.0000.000\n    w.Write((byte[])[0, 1, 2, 3]);\n    \n    // Float(1|2|3) only available in version 2\n    w.Write(new Float2(-100F, 300F));\n    w.Write(new Float3(-100F, 300F, 600F));\n    w.Write(new Float4(-100F, 300F, 600F, 900F));\n    \n    // get buffer\n    \n    byte[] buffer = w.GetBytes();\n    \n    // example send buffer\n    Magic.Send(buffer);\n    ```\n- ###### Reader\n    ```csharp\n    using Byter;\n    \n    // example receive buffer\n    byte[] buffer = Magic.Receive();\n    \n    // create instance\n    Reader r = new()\n        \n    // read data\n    \n    string noticeInEnglish = r.Read\u003cstring\u003e(); // Powered by ALEC1O\n    string noticeInChinese = r.Read\u003cstring\u003e(Encoding.UTF32); // 由 ALEC1O 提供支持\n    int myInt = r.Read\u003cint\u003e(); // 1.000.000\n    char myChar = r.Read\u003cchar\u003e(); // 'A'\n    long myLong = r.Read\u003clong\u003e(); // -100.0000.000\n    byte[] myBytes = r.Read\u003cbyte[]\u003e(); // [0, 1, 2, 3]\n    \n    // Float(1|2|3) only available in version 2\n    Float2 myFloat2 = r.Read\u003cFloat2\u003e(); // [x: -100F] [y: 300F]\n    Float3 myFloat3 = r.Read\u003cFloat3\u003e(); // [x: -100F] [y: 300F] [z: 600F]\n    Float4 myFloat4 = r.Read\u003cFloat4\u003e(); // [x: -100F] [y: 300F] [z: 600F] [w: 900F]\n    \n    if (r.Sucess)\n    {\n        // sucess on read all data\n    }\n    else\n    {\n        // one or more data isn't found when deserialize. Might ignore this buffer!\n    }\n    ```\n\n- ###### Dynamic Read Technical\n    ```csharp\n    var r = new Reader(...);\n    \n    var topic = r.Read\u003cstring\u003e(Encoding.ASCII);\n    \n    if(!r.Sucess) return; // ignore this \n    \n    if (topic == \"login\")\n    {\n        string username = r.Read\u003cstring\u003e(Encoding.UTF32);\n        string password = r.Read\u003cstring\u003e(Encoding.ASCII);\n        \n        if (!r.Sucess) return; // ignore this\n        // login user...\n    }\n    else if(topic == \"get user address\")\n    {\n        ulong userId  = r.Read\u003culong\u003e();\n        string token = r.Read\u003cstring\u003e(Encoding.ASCII);\n        \n        if (!r.Sucess) return; // ignore this\n        // get user adress...\n    }\n    ...\n    else\n    {\n        // ignore this. (Topic not found)\n    }\n    ```\n\n\u003c/details\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\n\u003ctr\u003e\u003cth\u003e\u003c/th\u003e\u003c/tr\u003e\n\n\u003ctr\u003e\n\u003cth align=\"center\" valign=\"top\"\u003e\u003csub\u003e\u003cstrong\u003ev3.x.x\u003c/strong\u003e\u003c/sub\u003e\u003c/th\u003e\n\u003ctd\u003e\n\n\u003cdetails\u003e\u003csummary\u003e📄 \u003cstrong\u003e\u003csup\u003e\u003csub\u003ePrimitive\u003c/sub\u003e\u003c/sup\u003e\u003c/strong\u003e\u003c/summary\u003e\n\n### Constructor\n\n- ###### () :                      ``Primitive`` \u003cbr\u003e\u003csub\u003eCreate instance with empty internal buffer\u003c/sub\u003e\n- ###### (``byte[]`` buffer) :     ``Primitive`` \u003cbr\u003e\u003csub\u003eCreate instance using (Byte[]) as internal buffer\u003c/sub\u003e\n\n### Proprieties\n\n- ###### Position :      ``int`` \u003cbr\u003e\u003csub\u003eReturn internal reading index/position.\u003c/sub\u003e\n- ###### IsValid :      ``bool`` \u003cbr\u003e\u003csub\u003eReturn (true) if data was read successful. otherwise (false)\u003c/sub\u003e\n- ###### Add : ``IPrimitiveAdd`` \u003cbr\u003e\u003csub\u003eObject used to (read/get) content from internal (Primitive) buffer\u003c/sub\u003e\n- ###### Get : ``IPrimitiveGet`` \u003cbr\u003e\u003csub\u003eObject used to (write/add) content in internal (Primitive) buffer\u003c/sub\u003e\n\n### Methods\n\n- ###### GetBytes() :     ``byte[]`` \u003cbr\u003e\u003csub\u003eReturn buffer from \u003ci\u003e(Primitive)\u003c/i\u003e instance as \u003ci\u003ebyte[])\u003c/i\u003e \u003c/sub\u003e\n- ###### GetList() :  ``List\u003cbyte\u003e`` \u003cbr\u003e\u003csub\u003eReturn buffer from \u003ci\u003e(Primitive)\u003c/i\u003e instance as \u003ci\u003eList\u0026lt;byte\u0026gt;\u003c/i\u003e \u003c/sub\u003e\n- ###### Reset():           ``void`` \u003cbr\u003e\u003csub\u003eClear internal buffer from \u003ci\u003e(Primitive)\u003c/i\u003e instance\u003c/sub\u003e\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e📄 \u003cstrong\u003e\u003csup\u003e\u003csub\u003eIPrimitiveAdd\u003c/sub\u003e\u003c/sup\u003e\u003c/strong\u003e\u003c/summary\u003e\n\n### Methods\n\n- ###### Bool(``bool`` value)             ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(bool) in internal buffer\u003c/sub\u003e\n- ###### Byte(``byte`` value)             ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(byte) in internal buffer\u003c/sub\u003e\n- ###### SByte(``sbyte`` value)           ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(sbyte) in internal buffer\u003c/sub\u003e\n- ###### Char(``char`` value)             ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(char) in internal buffer\u003c/sub\u003e\n- ###### Short(``short`` value)           ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(short) in internal buffer\u003c/sub\u003e\n- ###### UShort(``ushort`` value)         ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(ushort) in internal buffer\u003c/sub\u003e\n- ###### Int(``int`` value)               ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(int) in internal buffer\u003c/sub\u003e\n- ###### UInt(``uint`` value)             ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(uint) in internal buffer\u003c/sub\u003e\n- ###### Float(``float`` value)           ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(float) in internal buffer\u003c/sub\u003e\n- ###### Enum\u003c``T``\u003e(``T`` value)         ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(enum) in internal buffer\u003c/sub\u003e\n- ###### Long(``long`` value)             ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(long) in internal buffer\u003c/sub\u003e\n- ###### ULong(``ulong`` value)           ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(ulong) in internal buffer\u003c/sub\u003e\n- ###### Double(``double`` value)         ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(double) in internal buffer\u003c/sub\u003e\n- ###### DateTime(``DateTime`` value)     ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(DateTime) in internal buffer\u003c/sub\u003e\n- ###### Decimal(``decimal`` value)       ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(decimal) in internal buffer\u003c/sub\u003e\n- ###### String(``string`` value)         ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(string) in internal buffer\u003c/sub\u003e\n- ###### Class\u003c``T``\u003e(``T`` value)        ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(T) in internal buffer\u003c/sub\u003e\n- ###### Struct\u003c``T``\u003e(``T`` value)       ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(T) in internal buffer\u003c/sub\u003e\n- ###### Array\u003c``T``\u003e(``T`` value)        ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(T[]) in internal buffer\u003c/sub\u003e\n- ###### List\u003c``T``\u003e(``List\u003cT\u003e`` value)   ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(List\u003cT\u003e) in internal buffer\u003c/sub\u003e\n- ###### BigInteger(``BigInteger`` value) ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(BigInteger) in internal buffer\u003c/sub\u003e\n- ###### Bytes(``byte[]`` value)          ``void`` \u003cbr\u003e\u003csub\u003e(Write/Add) element typeof(byte[]) in internal buffer\u003c/sub\u003e\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e📄 \u003cstrong\u003e\u003csup\u003e\u003csub\u003eIPrimitiveGet\u003c/sub\u003e\u003c/sup\u003e\u003c/strong\u003e\u003c/summary\u003e\n\n### Methods\n\n- ###### Bool()             ``bool`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(bool) from internal buffer\u003c/sub\u003e\n- ###### Byte()             ``byte`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(byte) from internal buffer\u003c/sub\u003e\n- ###### SByte()           ``sbyte`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(sbyte) from internal buffer\u003c/sub\u003e\n- ###### Char()             ``char`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(char) from internal buffer\u003c/sub\u003e\n- ###### Short()           ``short`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(short) from internal buffer\u003c/sub\u003e\n- ###### UShort()         ``ushort`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(ushort) from internal buffer\u003c/sub\u003e\n- ###### Int()               ``int`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(int) from internal buffer\u003c/sub\u003e\n- ###### UInt()             ``uint`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(uint) from internal buffer\u003c/sub\u003e\n- ###### Float()           ``float`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(float) from internal buffer\u003c/sub\u003e\n- ###### Enum\u003c``T``\u003e()         ``T`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(enum) from internal buffer\u003c/sub\u003e\n- ###### Long()             ``long`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(long) from internal buffer\u003c/sub\u003e\n- ###### ULong()           ``ulong`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(ulong) from internal buffer\u003c/sub\u003e\n- ###### Double()         ``double`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(double) from internal buffer\u003c/sub\u003e\n- ###### DateTime()     ``DateTime`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(DateTime) from internal buffer\u003c/sub\u003e\n- ###### Decimal()       ``decimal`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(decimal) from internal buffer\u003c/sub\u003e\n- ###### String()         ``string`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(string) from internal buffer\u003c/sub\u003e\n- ###### Class\u003c``T``\u003e ()       ``T`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(T) from internal buffer\u003c/sub\u003e\n- ###### Struct\u003c``T``\u003e()       ``T`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(T) from internal buffer\u003c/sub\u003e\n- ###### Array\u003c``T``\u003e()      ``T[]`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(T[]) from internal buffer\u003c/sub\u003e\n- ###### List\u003c``T``\u003e()   ``List\u003cT\u003e`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(List\u003cT) from in internal buffer\u003c/sub\u003e\n- ###### BigInteger() ``BigInteger`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(BigInteger) from internal buffer\u003c/sub\u003e\n- ###### Bytes()          ``byte[]`` \u003cbr\u003e\u003csub\u003e(Read/Get) element typeof(byte[]) from internal buffer\u003c/sub\u003e\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\u003csummary\u003e📄 \u003cstrong\u003e\u003csup\u003e\u003csub\u003eExample\u003c/sub\u003e\u003c/sup\u003e\u003c/strong\u003e\u003c/summary\u003e\n\n- ###### Add Element\n    ```csharp\n    using Byter;\n    \n    Primitive primitive = new();\n    \n    // write elements\n  \n    primitive.Add.Class(myCharacterInfoClass);\n    primitive.Add.Array(myCharacterArray);\n    primitive.Add.List(myLogList);\n    primitive.Add.Struct(myDeviceStruct);\n    primitive.Add.DateTime(DateTime.UtcNow);\n    primitive.Add.Enum(MyEnum.Option1);\n    primitive.Add.Bytes(myImageBuffer);\n    \n    // send buffer\n  \n    byte[] buffer = primitive.GetBytes();\n    Magic.Send(buffer); // EXAMPLE!\n    ```\n\n- ###### Get Element\n    ```csharp\n    using Byter;\n    \n    // receive bugger\n    \n    byte[] buffer = Magic.Receive(); // EXAMPLE!\n    \n    Primitive primitive = new(buffer);\n    \n    // read elements\n    \n    var myCharacterInfoClass = primitive.Get.Class\u003cCharacterInfoClass\u003e();\n    var myCharacterArray = primitive.Get.Array\u003cCharacter\u003e();\n    var myLogList = primitive.Get.List\u003cstring\u003e();\n    var myDeviceStruct = primitive.Get.Struct\u003cDeviceStruct\u003e();\n    var myTime = primitive.Get.DateTime();\n    var myEnum = primitive.Get.Enum\u003cMyEnum\u003e();\n    var myImageBuffer = primitive.Get.Bytes();\n    \n    if (primitive.IsValid)\n    {\n        // sucess on read all data\n    }\n    else\n    {\n        // one or more data isn't found when deserialize. Might ignore this buffer!\n    }\n    \n    ```\n\n- ###### Dynamic Read Technical\n    ```csharp\n    Primitive primitive = new(...);\n    \n    var topic = primitive.Get.String();\n    \n    if(!primitive.IsValid) return; // ignore this \n    \n    if (topic == \"login\")\n    {\n        var loginInfo = primitive.Get.Class\u003cLoginInfo\u003e();\n        \n        if (!primitive.IsValid) return; // ignore this\n        // login user...\n    }\n    else if (topic == \"get user address\")\n    {\n        var getUserAddressInfo = primitive.Get.Class\u003cGetUserAddressInfo\u003e();\n        \n        if (!primitive.IsValid) return; // ignore this\n        // get user adress...\n    }\n    ...\n    else\n    {\n        // ignore this. (Topic not found)\n    }\n    ```\n\n\u003c/details\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n\u003cbr\u003e\n\n##### Overhead \u003csup\u003e\u003ci\u003e(supported types list)\u003c/i\u003e\u003c/sup\u003e\n\n\u003e \u003csub\u003eByter overhead information\u003c/sub\u003e\n\n| \u003csub\u003eType\u003c/sub\u003e       | \u003csub\u003ePrimitive \u003ci\u003e(overhead + size = total)\u003c/i\u003e\u003c/sub\u003e                                 | \u003csub\u003eWriter/Reader \u003ci\u003e(overhead + size = total)\u003c/i\u003e\u003c/sub\u003e                            |\n|-----------------------|---------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------|\n| \u003csub\u003eBool\u003c/sub\u003e       | ✔️  \u003ci\u003e(1 + 1 = 2 bytes)\u003c/i\u003e                                                          | ✔️ \u003ci\u003e(2 + 1 = 3 bytes)\u003c/i\u003e                                                          |\n| \u003csub\u003eByte\u003c/sub\u003e       | ✔️  \u003ci\u003e(1 + 1 = 2 bytes)\u003c/i\u003e                                                          | ✔️ \u003ci\u003e(2 + 1 = 3 bytes)\u003c/i\u003e                                                          |\n| \u003csub\u003eSByte\u003c/sub\u003e      | ✔️  \u003ci\u003e(1 + 2 = 2 bytes)\u003c/i\u003e                                                          | 🚫                                                                                   |\n| \u003csub\u003eChar\u003c/sub\u003e       | ✔️  \u003ci\u003e(1 + 2 = 3 bytes)\u003c/i\u003e                                                          | ✔️ \u003ci\u003e(2 + 2 = 4 bytes)\u003c/i\u003e                                                          |\n| \u003csub\u003eShort\u003c/sub\u003e      | ✔️  \u003ci\u003e(1 + 2 = 3 bytes)\u003c/i\u003e                                                          | ✔️ \u003ci\u003e(2 + 2 = 4 bytes)\u003c/i\u003e                                                          |\n| \u003csub\u003eUShort\u003c/sub\u003e     | ✔️  \u003ci\u003e(1 + 2 = 3 bytes)\u003c/i\u003e                                                          | ✔️ \u003ci\u003e(2 + 2 = 4 bytes)\u003c/i\u003e                                                          |\n| \u003csub\u003eInt\u003c/sub\u003e        | ✔️  \u003ci\u003e(1 + 4 = 5 bytes)\u003c/i\u003e                                                          | ✔️ \u003ci\u003e(2 + 4 = 6 bytes)\u003c/i\u003e                                                          |\n| \u003csub\u003eUInt\u003c/sub\u003e       | ✔️  \u003ci\u003e(1 + 4 = 5 bytes)\u003c/i\u003e                                                          | ✔️ \u003ci\u003e(2 + 4 = 6 bytes)\u003c/i\u003e                                                          |\n| \u003csub\u003eFloat\u003c/sub\u003e      | ✔️  \u003ci\u003e(1 + 4 = 5 bytes)\u003c/i\u003e                                                          | ✔️ \u003ci\u003e(2 + 4 = 6 bytes)\u003c/i\u003e                                                          |\n| \u003csub\u003eEnum\u003c/sub\u003e       | ✔️  \u003ci\u003e(1 + 4 = 5 bytes)\u003c/i\u003e                                                          | 🚫                                                                                   |\n| \u003csub\u003eLong\u003c/sub\u003e       | ✔️  \u003ci\u003e(1 + 8 = 9 bytes)\u003c/i\u003e                                                          | ✔️ \u003ci\u003e(2 + 8 = 10 bytes)\u003c/i\u003e                                                         |\n| \u003csub\u003eULong\u003c/sub\u003e      | ✔️  \u003ci\u003e(1 + 8 = 9 bytes)\u003c/i\u003e                                                          | ✔️ \u003ci\u003e(2 + 8 = 10 bytes)\u003c/i\u003e                                                         |\n| \u003csub\u003eDouble\u003c/sub\u003e     | ✔️  \u003ci\u003e(1 + 8 = 9 bytes)\u003c/i\u003e                                                          | ✔️ \u003ci\u003e(2 + 8 = 10 bytes)\u003c/i\u003e                                                         |\n| \u003csub\u003eDateTime\u003c/sub\u003e   | ✔️  \u003ci\u003e(1 + 8 = 9 bytes)\u003c/i\u003e                                                          | 🚫                                                                                   |\n| \u003csub\u003eDecimal\u003c/sub\u003e    | ✔️  \u003ci\u003e(1 + 16 = 17 bytes)\u003c/i\u003e                                                        | 🚫                                                                                   |\n| \u003csub\u003eString\u003c/sub\u003e     | ✔️  \u003ci\u003e(5 + ? = \u003csup\u003e+\u003c/sup\u003e5 bytes)\u003c/i\u003e \u003csup\u003e*UTF8\u003c/sup\u003e                             | ✔️ \u003ci\u003e(6 + ? = \u003csup\u003e+\u003c/sup\u003e6 bytes)\u003c/i\u003e                                              |\n| \u003csub\u003eClass\u003c/sub\u003e      | ✔️  \u003ci\u003e(2 + 0 = 2 bytes)\u003c/i\u003e                                                          | 🚫                                                                                   |\n| \u003csub\u003eStruct\u003c/sub\u003e     | ✔️  \u003ci\u003e(2 + 0 = 2 bytes)\u003c/i\u003e                                                          | 🚫                                                                                   |\n| \u003csub\u003eArray\u003c/sub\u003e      | ✔️  \u003ci\u003e(3 + ? = \u003csup\u003e+\u003c/sup\u003e3 bytes)\u003c/i\u003e  \u003csup\u003e*Max. 65535\u003c/sup\u003e                      | 🚫                                                                                   |\n| \u003csub\u003eList\u003c/sub\u003e       | ✔️  \u003ci\u003e(3 + ? = \u003csup\u003e+\u003c/sup\u003e3 bytes)\u003c/i\u003e  \u003csup\u003e*Max. 65535\u003c/sup\u003e                      | 🚫                                                                                   |\n| \u003csub\u003eBigInteger\u003c/sub\u003e | ✔️  \u003ci\u003e(3 + ? = \u003csup\u003e+\u003c/sup\u003e3 bytes)\u003c/i\u003e                                              | 🚫                                                                                   |\n| \u003csub\u003eBytes\u003c/sub\u003e      | ✔️  \u003ci\u003e(5 + ? = \u003csup\u003e+\u003c/sup\u003e5 bytes)\u003c/i\u003e \u003csup\u003e*Max. 4.294.967.295 *(~4billions)\u003c/sup\u003e | ✔️ \u003ci\u003e(6 + ? = \u003csup\u003e+\u003c/sup\u003e6 bytes)\u003c/i\u003e \u003csup\u003e*Max. 2.147.483.647 *(~2billions)\u003c/sup\u003e |\n\n\u003cbr\u003e\n\n### Encoding Extension\n```csharp\nusing Byter;\n```\n\n- \u003cstrong\u003e\u003csub\u003eConvert string to byte[]\u003c/sub\u003e\u003c/strong\u003e\n    ```csharp\n    // using global encoding (*UTF8)\n    byte[] username  = \"@alec1o\".GetBytes(); \n    \n    // using UNICODE (*UTF16) encoding\n    byte[] message = \"Hello 👋 World 🌎\".GetBytes(Encoding.Unicode); \n    \n    // using UTF32 encoding\n    string secreatWord = \"I'm not human, I'm  a concept.\";\n    byte[] secreat = secreatWord.GetBytes(Encoding.UTF32);\n    ```\n\n- \u003cstrong\u003e\u003csub\u003eConvert byte[] to string\u003c/sub\u003e\u003c/strong\u003e\n    ```csharp\n    // using global encoding (*UTF8)\n    string username  = new byte[] { ... }.GetString(); \n    \n    // using UNICODE (*UTF16) encoding\n    string message = new byte[] { ... }.GetString(Encoding.Unicode); \n    \n    // using UTF32 encoding\n    byte[] secreat = new byte[] { ... };\n    string secreatWord = secreat.GetString(Encoding.UTF32);\n    ```\n- \u003cstrong\u003e\u003csub\u003eConcat bytes (byte[])\u003c/sub\u003e\u003c/strong\u003e\n    ```csharp\n    byte[] part1 = [ 1, 1, 1 ];\n    byte[] part2 = [ 4, 4, 4 ];\n    \n    /* \n        ..          ..      ..      ..      ..      ..      ..      ..      ..      .. \n        \n        Concat part1 and part2 \n        \n        ..          ..      ..      ..      ..      ..      ..      ..      ..      .. \n        \n        --- `byte[].Concat` Used concat bytes normally.\n        --- `byte[].ConcatInverse` Used concat bytes inversed (first is last and last is first).\n        --- `byte[].Concat(invert: true|false, ....)` Generic way to concat `Inversed` and `Normal` direction.\n        \n        ..          ..      ..      ..      ..      ..      ..      ..      ..      .. \n    */\n    \n    \n    // Normal \u003e\u003e\u003e\n    byte[] normal = part1.Concat(part2); //... [ 1, 1, 1, 4, 4, 4 ]\n    byte[] normal = part2.Concat(invert: true, part1); //... [ 1, 1, 1, 4, 4, 4 ]\n    byte[] normal = byte[].Concat(invert: true, part2, part1); //... [ 1, 1, 1, 4, 4, 4 ]\n    byte[] normal = byte[].Concat(invert: false, part1, part2); //... [ 1, 1, 1, 4, 4, 4 ]  \n    \n    // Inversed \u003c\u003c\u003c\n    byte[] inversed = part1.ConcatInverse(part2); //... [ 4, 4, 4, 1, 1, 1 ]\n    byte[] inversed = part2.Concat(invert: false, part1); //... [ 4, 4, 4, 1, 1, 1 ]\n    byte[] inversed = byte[].Concat(invert: false, part2, part1); //... [ 4, 4, 4, 1, 1, 1 ]\n    byte[] inversed = byte[].Concat(invert: true, part1, part2); //... [ 4, 4, 4, 1, 1, 1 ]\n    ```\n\n- \u003cstrong\u003e\u003csub\u003eCapitalize string\u003c/sub\u003e\u003c/strong\u003e\n    ```rb\n    string name = \"alECio furanZE\".ToCapitalize();\n    # Alecio Furanze\n    \n    string title = \"i'M noT humAn\";\n    title = title.ToCapitalize();\n    # I'm Not Human\n    ```\n\n- \u003cstrong\u003e\u003csub\u003eUpperCase string\u003c/sub\u003e\u003c/strong\u003e\n    ```rb\n    string name = \"alECio furanZE\".ToUpperCase();\n    # ALECIO FURANZE\n    \n    string title = \"i'M noT humAn\";\n    title = title.ToUpperCase();\n    # I'M NOT HUMAN\n    ```\n\n- \u003cstrong\u003e\u003csub\u003eLowerCase string\u003c/sub\u003e\u003c/strong\u003e\n    ```rb\n    string name = \"ALEciO FUraNZE\".ToLowerCase();\n    # alecio furanze\n    \n    string title = \"i'M Not huMAN\";\n    title = title.ToLowerCase();\n    # i'm not human\n    ```\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cdetails\u003e\n\u003csummary\u003eLegacy Docs \u003ci\u003e(v1.x.x - v2.x.x)\u003c/i\u003e\u003c/summary\u003e\n\n# Byter\n\nByter is a bytes serializer. It can serialize and deserialize from primitive type.\n\n\u003e ###### Byter is very stable, super easy to learn, extremely fast and inexpensive (2 bytes or ``sizeof(char)`` of overhead per data written) and ``100%`` written in ``C#`` and it's FREE!\n\n\u003cbr\u003e\u003chr\u003e\u003cbr\u003e\n\n## Install\n\n- #### Nuget [SEE HERE](https://www.nuget.org/packages/Byter)\n  ###### .NET CLI\n  ```rb\n  dotnet add package Byter --version 2.0\n  ```\n  ###### Git submodule\n  See how add as git submodule? See on bottom of this docs\n\n\u003cbr\u003e\u003chr/\u003e\n\n## Usage\n\n#### Namespace\n\n```csharp\nusing Byter\n```\n\n#### Types\n\n```ts\n[\n    `byte`,\n    `bool`,\n    `byte[]`,\n    `short`,\n    `ushort`,\n    `int`,\n    `uint`,\n    `long`,\n    `ulong`,\n    `float`,\n    `double`,\n    `char`,\n    `string`,\n    `Float2`(Vector2),\n    `Float3`(Vector3),\n    `Float4`(Vector4 / Quaternion),\n]\n```\n\n\u003chr/\u003e\n\n## Writer\n\n\u003e Constructor\n\n-\n\n```cs\n_ = new Writer();                          // Create default instance\n_ = new Writer(new Writer());              // Create instance and copy from existing Writer\n_ = new Writer(ref new Writer());          // Create instance and copy from existing Writer (using ref)\n```\n\n\u003cbr\u003e\n\n\u003e Proprietary\n\n- #### ``Length``\n  ```cs\n  using Byter;\n\n  var w = new Writer();\n\n  // Get lenght of buffer\n  int lenght = w.Length; \n  ```\n\n\u003cbr/\u003e\n\n\u003e Methods\n\n- #### ``Write(dynamic value)``\n  ```cs\n  using Byter;\n\n  // Create writer instance;\n  using var w = new Writer();\n  \n  // Write string\n  w.Write(\"KEZERO\");\n\n  // Write char\n  w.Write('K');\n\n  // Write Float3 (Vector3)\n  w.Write(new Float3(10F, 10F, 10F));\n\n  // Get bytes (buffer)\n  byte[] buffer = w.GetBytes();\n\n  // Get byte list (buffer)\n  List\u003cbyte\u003e bytes = w.GetList();\n  ```\n\n- #### ``GetBytes()``\n  ```cs\n  using Byter;\n\n  var w = new Writer();\n\n  // Return buffer on \u003cWriter\u003e instance \n  byte[] buffer = w.GetBytes();\n  ```\n\n- #### ``GetList()``\n  ```cs\n  using Byter;\n\n  var w = new Writer();\n\n  // Return buffer on \u003cWriter\u003e instance as byte list \n  List\u003cbyte\u003e bytes = w.GetList();\n  ```\n\n- #### ``Clear()``\n  ```cs\n  using Byter;\n\n  var w = new Writer();\n  w.Write((int)1000);\n  w.Write((float)100f);\n\n  // Clear internal buffer and reset internal index\n  w.Clear();\n  ```\n\n\u003chr\u003e\n\n## Reader\n\n\u003e Constructor\n\n-\n\n```cs\n_ = new Reader(new Writer());               // Create instance and copy buffer from existing Writer\n_ = new Reader(ref new Writer());           // Create instance and copy buffer from existing Writer (ref Writer)\n_ = new Reader(new byte[] { 1, 1, 1, 1 });  // Create instance from buffer (bytes (byte[]))\n```\n\n\u003cbr/\u003e\n\n\u003e Proprietary\n\n- #### ``Length``\n  ```cs\n  using Byter;\n\n  byte[] buffer = ...;\n  var r = new Reader(buffer);\n\n  // Get lenght of buffer\n  int lenght = r.Length; \n  ```\n\n- #### ``Position``\n  ```cs\n  using Byter;\n\n  byte[] buffer = ...;\n  var r = new Reader(buffer);\n\n  // return current index of readed buffer\n  int position = r.Position; \n  ```\n\n- #### ``Success``\n    ```cs\n    using Byter;\n\n    byte[] buffer = ...;\n    var r = new Reader(buffer);\n    string name = r.Read\u003cstring\u003e();\n    int age = r.Read\u003cint\u003e();\n    \n    // return true if not exist problem on read values.\n    // return false when have any error on read values;\n    bool success = r.Success; \n    ```\n    - ###### WARNING\n      Internally, before data is written a prefix is added in front of it, so when reading it always compares the prefix\n      of the (data type) you want to read with the strings in the read buffer. if the prefixes do not match then o (\n      Reader. Success = False), eg. If you write an (int) and try to read a float (Reader.Success = False) because the\n      prefix of an (int) is different from that of a (float), it is recommended to read all the data and at the end\n      check the success, if it is (Reader.Success = False) then one or more data is corrupt. This means that Writer and\n      Reader add dipping to your write and read data.\n\n\u003cbr/\u003e\n\n\u003e Methods\n\n- #### ``Read\u003cT\u003e()`` ``Read\u003cstring\u003e(Encoding encoding)``;\n  ```cs\n  using Byter;\n\n  byte[] buffer = ...;\n\n  // Create reader instance\n  using r = new Reader(buffer);\n\n  string name = r.Read\u003cstring\u003e();\n  char firstLatter = r.Read\u003cchar\u003e();\n  Float3 position = r.Read\u003cFloat3\u003e();\n\n  // Check if is success\n  if (r.Success)\n  {\n      Console.WriteLine($\"Name: {name}\");\n      Console.WriteLine($\"First Latter: {firstLatter}\");\n      Console.WriteLine($\"Position: {position}\");\n  }\n  else\n  {\n      Console.WriteLine(\"Error on get data\");\n  }\n  ```\n\n- #### ``Seek(int position)``;\n  ```cs\n  using Byter;\n\n  using var w = new Writer();\n  w.Write(\"KEZERO\");\n  w.Write((int) 1024);\n\n  using var r = new Reader(ref w);\n\n  string name = r.Read\u003cstring\u003e(); // name: KEZERO\n  int age = r.Read\u003cint\u003e(); // age: 1024\n  \n  // Move index (Reader.Position) for target value \"MIN VALUE IS 0\";\n  r.Seek(10); // move current index for read for 10 (when start read using .Read\u003cType\u003e will start read on 10 index from buffer);\n\n  // Reset internal position\n  r.Seek(0);\n\n  string name2 = r.Read\u003cstring\u003e(); // name: KEZERO (because the start index of this string on buffer is 0)\n  int age2 = r.Read\u003cint\u003e(); age: 1024;\n\n  // NEED READ LAST INT\n  r.Seek(r.Position - sizeof(int) + sizeof(char) /* int size is 4 + char size is 2. The 2 bytes is overhead of protocol */);    \n  int age3 = r.Read\u003cint\u003e(); age: 1024 (because i return 4bytes before old current value)\n  ```\n\n\u003cbr/\u003e\u003chr/\u003e\u003cbr/\u003e\n\n#### Sample\n\n```csharp\nusing Byter;\n\n// writing\nWriter writer = new();\n\nwriter.Write(1000); // index\nwriter.Write(\"{JSON}\"); // content\nwriter.Write(new byte[]{ 1, 1, 1, 1 }); // image\n\n// geting buffer\nbyte[] buffer = writer.GetBytes();\nwriter.Dispose(); // Destroy Writer\n\n// reading\nReader reader = new(buffer);\n\nint index = reader.Read\u003cint\u003e();\nstring json = reader.Read\u003cstring\u003e();\nbyte[] image = reader.Read\u003cbyte[]\u003e();\n\n// Check error\nif (!reader.Success) // IS FALSE\n{\n    Console.WriteLine(\"*** ERROR ****\");\n    return;\n}\n\n// Check success\nConsole.WriteLine(\"*** SUCCESS ****\");      \n\n// Output\nConsole.WriteLine($\"Index: {index}\");           // output: 1000\nConsole.WriteLine($\"JSON : {json }\");           // output: JSON\nConsole.WriteLine($\"Image: {image.Length}\");    // output: 4\nConsole.WriteLine($\"Status: {reader.Success}\"); // output: True\n\n// Making error\nfloat delay = reader.Read\u003cfloat\u003e();\n                                                                                            /*\nWARNING:                \nif you reverse the reading order or try to read more data than added (Reader.Succes = False),\nRemembering does not return exception when trying to read data that does not exist it just\nreturns the default construction, and (Reader.Success) will be assigned (False)             */\n\nif (reader.Success)  // IS FALSE, THE IS NOT WRITED IN BUFFER\n    Console.WriteLine($\"Delay: {delay}\");\nelse                // IS TRUE, THE DELAY NOT EXIST\n    Console.WriteLine($\"Delay not exist\");\n\n// Output of status\nConsole.WriteLine($\"Status: {reader.Success}\"); // output: False\n\nreader.Dispose(); // Destroy Reader\n```\n\n\u003cbr/\u003e\u003chr/\u003e\u003cbr/\u003e\n\n#### Install using git submodule\n\n  ```rb\n  # Install - recommend a stable branch e.g. \"1.x\" or use a fork repository, --depth clone last sources\n  git submodule add --name byter --depth 1 --branch main \"https://github.com/alec1o/byter\" vendor/byter\n\n  # Rebuilding - Download repository and link it in file location, must add this step in dotnet.yaml if using\n  git submodule update --init\n\n  # Update submodule - Update and load new repository updates\n  git submodule update --remote\n\n  # PATH\n  # |__ vendor\n  # |   |__ byter\n  # |      |__ src\n  # |        |__ Byter.csproj\n  # |\n  # |__ app\n  # |   |__ app.csproj\n  # |\n  # |__ app.sln\n  # |__ .git\n  # |__ .gitignore\n  # |__ .gitmodules\n\n  # .NET link on .sln\n  cd \u003cPATH\u003e\n  dotnet sln add vendor/byter/src/Byter.csproj\n\n  # .NET link on .csproj\n  cd app/\n  dotnet add reference ../vendor/byter/src/Byter.csproj\n  \n  # Rebuild dependencies to be linked in the project\n  dotnet restore\n  ```\n\n\u003c/details\u003e\n\n\u003cbr\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falec1o%2Fbyter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falec1o%2Fbyter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falec1o%2Fbyter/lists"}