From b57d85c68b6a93561155a9f3aca4d3c0a672cd86 Mon Sep 17 00:00:00 2001 From: nc543 Date: Fri, 19 Sep 2025 20:36:01 -0400 Subject: [PATCH] Initial version --- .gitignore | 1 + binaryEditor | Bin 0 -> 16544 bytes binaryEditor.c | 82 +++++++++++++++++++++++++++++++++++++++++++++++++ binaryEditor.h | 48 +++++++++++++++++++++++++++++ makefile | 5 +++ 5 files changed, 136 insertions(+) create mode 100644 .gitignore create mode 100755 binaryEditor create mode 100644 binaryEditor.c create mode 100644 binaryEditor.h create mode 100644 makefile diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1bb4614 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.code-workspace \ No newline at end of file diff --git a/binaryEditor b/binaryEditor new file mode 100755 index 0000000000000000000000000000000000000000..6d90aff8861e6b4cc105b007c8d4599a5d04fe2a GIT binary patch literal 16544 zcmeHOZE#f889p0W6D5)bK@k;J1w}DS0wLlDWeF@S%2y%i*ikQ=?1t>P*-dxvO2R0m zMjdtnoyhdVs-3~HRr~RSaU8@>D*-eS$F@N_O2J&pGeS-8&2I zIQ`KdduHx^&ilL{=bZPRdvj0rp6`TKE-UeP1eY=58-k>6pJIYq(Z4`f070=pT#oZ} zF-=?od937=KBxd%RgRV9W0~g10LgC(RSMv>iWZFALqhVqQ0b!%p)d+P4)XJoLd$M^ zM=FJ2WWC*FdtjB-?JLok3{m@qy6@1KgJ>I5DFvb zlX61G0-aAcR*@45quZ}p`?+zcaubZy29@{z#_scNCjR{2yMsDw$@Y9!8 zTU;FYGOyF^UFbS&)cI%B=@oMl@rK%(If-axBA(2)Rkkgtt*osHWKw~-vSI3%9|ujF z<*PRcgy|+ur%{w_Q!>XR-6X9i`?3eeJ@DhPKiF_=&)kph{_?8l&wljMn`A@%CLgk) zLh*QtkWBSUagdG5$9GXv9O04J?^_5jRLEyy0p;Wi@DGFc7qF-H3&p9u0KWyiABVe) z2T>?a4!qxO4EbgpHx%GSYu3!rsj)ed7A=uPBGo7i16Q%p$e59|X|zP*NidCV5u+)d zj3nY)Vxl!2Pnu1Ftmx9#isdU;)GaaQ2Ike+)wzNB!dOwi%816&u}$%e8B5o%T9Qa5 zWA%}SL<}J}wWN}|5kr|4G(@jUa6LUZm&h~K=%8Di=j-dw{1BIDj99L@?9@0ecZpc1 z$IQNUebAtJenlB3~J@YIdTcmiJ56=13@8EeZljVSeSMyH!4>@>lgEYeq zp5`l;eVQ)?L34;pw}YqqfXllMUO%Fxs?WhwtYRrR#TUh z=|%432ct5*P@X(ED$|SP$=7Vznz>(N@|AgV^`|RxM;;F6 zj)yz`I<&SvRNY;DIJ|S=^JvzZ{6#>B(@lYj=})2)7~sx@SHn5H(>syij$v~$hW;Up zXy}(({T0)gSK@t7NsS z>!CxA@VV@;Bl>lN^E*Ss9sR>O?-2ecA?u}0Iq%;f3{GX$38(6P2(FlU0c(*jnCzVN z4t2BQ4e#@iD&FY!^bPtuz0c*Tx@?tqA6bv~6j{F?%Ff9T;GFv)?CGo6D=OaVL%e&H z)0?y~xaGh;nx04db01#c1Kk{@`?b^^%njv^939>svY?p^O-Hu}V;d)Jykh}P9mA!M zPU-ZXzD+7~-a%B5*-rrI^xlx==uyWhUr*?)=najKa?!@=`d3q|sxGc@uRB^u-UBsX;ZLCC0{%i*eY=XwVMNJ2-89HD6cLs!@6 z`0(`c?WZTifPciY!nx2eX6tacqr0Ss?mO?p-Sq{FP-@yw#oSf%A>hxmPLn{0n^uoko^Vmu@|}|1$D_44ewR1Gk}y`2^J{;y{~S zOWN9~&3((Rt+i{*?AqN_lYN|P*Jjz;X*M^><}R~q!q%R_VAOzn2l~%hmK@39L-M&P zpWF76nmSx8#S9cPP|QFv1H}v!Gf>PxF$2X6Ts#Bx`%|@;87C{xHDm6gwS75`Nkf+P z0x$}E8)yRm4166(E9swnW?A&sJp!DBx7@X#TUHJ5WnevU!55Zg0>20RK5+VJ%X%G{ z1pX07zlBoqY*{BfZ9dO6<)vj^ny26VXQ7>&$Y5!y{Ap|ksx>%T|6y5ci68Go7xBLh`p=<% zCeMGn?Y|QGM&x}>o_?9FPe8v5`h`Gyd}C@n(tv!5rI>+Y28tOdW}ujXVg`yCC}yCT zfno;!FEYU2_wo09^a@W!f9@yOYLd{4oy(;l#6J3<6Xj|Jg1;NQM$7!I-c&8~_k*+^ zqQd$w&s!;y_s}miDEtlHyJMBi-vS=fdiqg?%1a6aet(f=ibmZnEscIJyL*wM_*=w{ z+Je??ROp8$Dpx5Gt-4|6_vnsszq_>^e|yO7Pt!cx;pZPYKIBzW_~Av$+jKnqY{h!% ziDjUa6Iy>(%X;`a`u`62yKi^IDt*0!8rN#vsL^fzpJe_nbor7cclu{-XvikbtiO6* zU|yiAvNkKlxm)Mf1gdIo(e%Y5(mWk2KC|3bbUi%K?9d7GYlAC*h3x5imEh~xA=kLb zk9fcS&K068^Kd4f?-xyr6{vW`RN)IMhVLW#%Gx8Y6g>ZxR*1(?p*Vd1F~42fPqyzT z=3hajQ2#G9uDvo2X1DyW1xHa>C=UG(#)H}Ko)5p1E?3y!(Q~AJX+K5qeZ~A4R0@4> zeHjum0r{B{RF-^y_`nykuhjN_ZLc2(;!bJr6Ax-9`9Beaya&8rh0Z(EFQk5YN(J+1 z(FDFwyPLsNKWAxs?&ns`*Jz%fBc0%Vi0^a7-zDSw#A~{dUAp<_H2-rwujK!Pp!+HD zB@^uDsx}wDkoGK%;%~uIyY6wlr{h0I69Yy5PX~BZ^JTg}@_$X>{{r3*beB)TPbj%s z@O{hrbHr2T{EFf0aw!s`L$j&GYr#`KtAhFVw}SV9U!ZxV#dk4?KM|U4eLu?o(Lp&! z#`lS(dR%S<%KnkDvM;hXW8QCO2WXx<+Q=n0dZV52V7Ne0i z1!Q0uO&OaKsfI|xh?=Q%#)xFwL}RL@H4!so(LhyU3)+f(he7gWWdtQGi|_*hID%<8b^ERmtibhw|G^^2(4afU`xW%2Uag$wPFcqY%4KB zVXX}>T_=p?E7#O5UTLgZwrqW<-l$((w=!h#K8hf3hoC(W@g#OvAcSj6g>8c^6Y*qS zyBS;4)Rc*tVpGhlLzZG`EnjR81#RB215snCtVyi_>f$B`h(#l2M5JSpC`f@eRD2;b zr}uK?MZuMThuWGUHmBoeOgY9LVNciI4I`RK8O@Pol=gM3SOd>!JZWSzv8disk{6zO zH#%Niw5aMFINci645J~F(S6W+P_Tc5FAZ%hDY#n%xf~sN-maCrKFFycL?F}NVn!N( zW?Er0*RaDSmTnb+WXg;MHYKxx)^w^hmNwfRR6{n7olfznrWV(&sHB-L&6^{cW)X zXYh{8{pWQ6Be&1%0C)c*@TWBZ`|~=1aY(mIeWX0IKfkZX!O^QC`}4Yk@g?Y-gx3`haQgeTALCl5G3u`H;uV*F zt2SU{dk(`g;~tm)HmzU`vZF@!V|>%)->nsl|8z}w_T#YoUH-hTX5{rY+q=SvceFoW zf8p1b8fiV`EN*{#zo-1Of4N^-GbWU1pWXf+L*w*s^D9%v9i(&=o> (7 - inBitOffset); + inBitOffset++; + if (inBitOffset >= 8){ + inByteOffset++; + inBitOffset = 0; + } + return result; +} + +char readByte(){ + char result = 0; + for (int i = 0; i < 8; i++){ + unsigned short bit = readBit(); + result += bit << (7 - i); + } + return result; +} + +void writeBit(unsigned char bit){ + output[outByteOffset] += bit << (7 - outBitOffset); + outBitOffset++; + if (outBitOffset >= 8){ + outByteOffset++; + outBitOffset = 0; + } +} + +void writeByte(unsigned char byte){ + for (int i = 7; i >= 0; i--){ + writeBit((byte & (1 << i)) >> i); + } +} diff --git a/binaryEditor.h b/binaryEditor.h new file mode 100644 index 0000000..826661e --- /dev/null +++ b/binaryEditor.h @@ -0,0 +1,48 @@ +#ifndef BINARYEDITOR +#define BINARYEDITOR + +typedef enum{ + BUF_IN, + BUF_OUT +} Buffer; + +/** +Allows setting the input and output buffers for the binary editor. +*/ +void setBuffer(Buffer buffer, void *data); + +/** +Allows the changing of the read/write position in the given buffer. +position is specified in bits. +*/ +void seekBuffer(Buffer buffer, unsigned int position); + +/** +Returns what the current offset of a buffer is, in bits. +It gives the index of the next bit to be read/written +*/ +unsigned int getBufferOffset(Buffer buffer); + +/** +Returns the next bit from the read buffer. +*/ +char readBit(); + +/** +Returns the next 8 bits from the read buffer. +This is equivalent to calling readBit() 8 times. +*/ +char readByte(); + +/** +This writes a single bit to the output buffer +*/ +void writeBit(unsigned char bit); + +/** +This writes one byte to the output buffer. +This is equivalent to calling writeBit() 8 times. +*/ +void writeByte(unsigned char byte); + +#endif \ No newline at end of file diff --git a/makefile b/makefile new file mode 100644 index 0000000..fdccc3a --- /dev/null +++ b/makefile @@ -0,0 +1,5 @@ +all: + gcc -Wall binaryEditor.c -o binaryEditor + +clean: + rm -f binaryEditor \ No newline at end of file