Hexy: Add small binary files inside your code
Posted: Sat Jun 20, 2015 2:47 pm
I was trying out the new commands in smart Basic v4.8 today (HEX/DEC/GZIP/GUNZIP) and made this little tool to allow me to put small files directly in source code (I still don't use dropbox ). This is more for fun and curiosity than for practical use. The new sB commands work very well I think.
- Dav
Hexy program below will hexify a file and output source code that when run will recreate that file in the current directory. You can use the file and delete it afterwards. I will also post an example of what Hexy can do.
Hexy v1.0 program
Here is and example of a file included in source code using Hexy program. This demo recreates a .zip file, unzips my forum avatar in .jpg format, loads the image and puts it on the screen randomly.
- Dav
Hexy program below will hexify a file and output source code that when run will recreate that file in the current directory. You can use the file and delete it afterwards. I will also post an example of what Hexy can do.
Hexy v1.0 program
Code: Select all
'Hexy.txt v1.0 - A file hexifier
'Encodes small binary file to smart basic code
'that recreates the binary file when executed.
'Outputs series of .txt files for larger file.
'(ie: out1.txt,out2.txt, out3.txt, etc...)
'Coded by Dav, JUNE/2015
f$="davface.zip" '<<< name of file to hexify
if file_exists(f$)=0 then
print f$&" not found." ! end
end if
option base 1
option screenlock off
num=1 ! of$="out"& str$(num)&".txt"
bc=0 ! lc=1
print "Creating "&of$&" from "&f$&"..."
r$="hx$="&chr$(34)&chr$(34)&" '"&f$
r$=r$&" - created by Hexy v1.0"
file of$ writeline r$
for t= 1 to file_size(f$)
file f$ read a
d$=hex$(a)
if lc = 1 then
r$="hx$=hx$&"&chr$(34)
file of$ writeline r$;
end if
if len(d$)=1 then
file of$ write asc("0")
file of$ write asc(d$)
else
file of$ write asc(mid$(d$,1,1))
file of$ write asc(mid$(d$,2,1))
end if
bc=bc+1
lc=lc+1
if lc =20 then
file of$ write asc(chr$(34))
file of$ write 10
lc =1
end if
if bc > 30000 then
bc=0 ! lc=1
num=num+1
of$="out"& str$(num)&".txt"
print "Creating "&of$&"..."
end if
next t
file of$ write asc(chr$(34))
file of$ write 10
file of$ writeline "option base 1"
r$="for t = 1 to len(hx$) step 2"
file of$ writeline r$
r$=" d$=chr$(dec(mid$(hx$,t,2)))"
file of$ writeline r$
r$=" file "&chr$(34)&f$&chr$(34)&" write asc(d$)"
file of$ writeline r$
r$="next t"
file of$ writeline r$
print "Done."
end
Code: Select all
'davface.txt
'Example of using Hexy to recreate a file.
'This code creates a .zip file, unzips it,
'then loads the .jpg file it contains.
'by Dav, JUNE/2015
'NOTE: This demo creates two files in the
'current directory: davface.zip & .jpg
hx$="" 'davface.zip - created by Hexy v1.0
hx$=hx$&"1F8B08000000000000039D957B3854FB1AC7D7"
hx$=hx$&"9831C39891C98C86E3B28C11E312C3109B69B6"
hx$=hx$&"CB4CA82143722BB91506C38489CA6547343BB5"
hx$=hx$&"518AF63E36B9A45C8B846AC756939EB41F1A77"
hx$=hx$&"21B925A7E37E2BE6CC74D9FB9FFDC739E7BB9E"
hx$=hx$&"67ADF7F77BBFEFFBFE3ECF7AD6B3447DA25140"
hx$=hx$&"C189E1C800206219400C00403408D801327038"
hx$=hx$&"022E2D83402064656590282C1A25278752DEAE"
hx$=hx$&"B80DABA6A2A1AEA6A2AA0A1277E98004032D55"
hx$=hx$&"55DDDD240363328542D1D0B1A45A9858EF32A5"
hx$=hx$&"98489A406465655172283C1A8D37D154D534F9"
hx$=hx$&"9F257A0C60640047C0090A2100521808140311"
hx$=hx$&"B5011A000091867C16F0551029284C1A8E9091"
hx$=hx$&"45CA890DF50A8014040A958241A5A5613071F6"
hx$=hx$&"8C380FC030D2DB35C9367045577F04211A6B92"
hx$=hx$&"925528A3655BDB826375CE114D03B83FC82295"
hx$=hx$&"76E09555B477EAE892F42866E6BB2D2CBFB3B3"
hx$=hx$&"A733F63A383AB9B91FF438E4E9E51D18147CEC"
hx$=hx$&"784868D88998D838DEC9F884B3A969E7D233CE"
hx$=hx$&"F3B3732E5FC9BD7A2D2FBFE846714969D9CDF2"
hx$=hx$&"5B77EED6D5DF6BB8DFD8D4FA7BDB93A78267ED"
hx$=hx$&"CFBB5E09BB7B7AFBFA07DE8CBD1D9F989C9A7E"
hx$=hx$&"3733BFB0B8B4BCB2BAB6BE21E1820050C837FD"
hx$=hx$&"2D1746CC2505834161080917448A27316060D2"
hx$=hx$&"9A64F8761B57847FB422C12445066B9B5558DB"
hx$=hx$&"22AB65CA9AC305703B914A44CA1BED7909DA67"
hx$=hx$&"B2FF0EEC87FF8BEC4FB0BFB806001414227E79"
hx$=hx$&"500C4003266E16F1975E82A5CD15215E1781C2"
hx$=hx$&"D781B61FA26E94575D6D1DC6EF3EFE91E335C8"
hx$=hx$&"297DBCBBE85994BC554E5749335A3F73AE3739"
hx$=hx$&"3649B1C570BC5A3BB394C6252F5AAE2E557158"
hx$=hx$&"B5426BB35B66E72ACA0255E99678449F08C84C"
hx$=hx$&"206AE0B75E0525DDA178290D98DED91127B82E"
hx$=hx$&"A0E305AE171FCEA415F0C3F7E808628B667293"
hx$=hx$&"021E9EDF6347523E661D88571F3AD5A3C77AD8"
hx$=hx$&"1FA1955994E3F6CAE893FE4D34CD9D4588D42C"
hx$=hx$&"A85DD9997BCF7932C253B788FF2B323C9BE85A"
hx$=hx$&"976DECEE9ACDDCEE90C578398B730FCAF1CE57"
hx$=hx$&"CF6253F6FACD63D867D485E9981ACB9C217E9E"
hx$=hx$&"155A3F3F51662E6858FB9758ABA590A5E98BD3"
hx$=hx$&"37FCB76A36F2A71F1CAB790FA76DFBDDD42E3C"
hx$=hx$&"D9FA9D325077F2E988E0135BEED0DA6AB18FCF"
hx$=hx$&"668E7D57D9C9EFF550D70F24A00066D4DC2786"
hx$=hx$&"9063549A2DA037C44F59159B3CEBC87A0C1CAD"
hx$=hx$&"824B1F2DBDDE4C890E0D8959EDD4EB4079DCAC"
hx$=hx$&"2DDE6F9E317FF135A9A93E35E761E5F2BD0833"
hx$=hx$&"0DCA8EC6858DAC575A739BD49992478D63E711"
hx$=hx$&"2AF21927364580F5A886EF3E37E6184DC987C3"
hx$=hx$&"9955D3FCE9D235D2B5C0C5DC062EF3B44107E3"
hx$=hx$&"B54B784F9DA1D5D301083F089297E8A1359979"
hx$=hx$&"FBF17284DEC7D6848295B8E28A001D85A124D9"
hx$=hx$&"959D557D9FA2851447229F09C7E9FC9BA1ADA5"
hx$=hx$&"B6F88C9AE9234CDC15F2C83C85F2D0CF217BE8"
hx$=hx$&"B9ADC1E8391941F229CC462F25F8F96C5EDD95"
hx$=hx$&"EE17DEA458A6CE81B992B59A6E850C9F4DFBA9"
hx$=hx$&"42F5D4AE434E3CE3B0A753671F5023C65C1452"
hx$=hx$&"9BF24EDFF6B54C2D78F4DA46F06BE5C88FF9F6"
hx$=hx$&"ABEA98FCE14E6449B9D7E93ABF07D805381541"
hx$=hx$&"4B8B8AEEE095F9D1CB43BBB0CD3FD658C85369"
hx$=hx$&"7F8880DB3D752E8A5E275F310753E46F6CDF5A"
hx$=hx$&"D0199D1AB893CF137619D94DD0AE652527CCF3"
hx$=hx$&"972FC1DEB98416F60F5798F7DF6779EFCBDB1F"
hx$=hx$&"6669A1DCD23E561FEB97F6741B6E60C433DE78"
hx$=hx$&"60BDA50A3C9D0CB7D176B18E7D7B21C9C867AE"
hx$=hx$&"2CDD60F6939574652BB15C59D3277AF6D48927"
hx$=hx$&"C7A56737277D0BF6644C5A9BAA3670F11F080D"
hx$=hx$&"976BB461C8289A2A4AF8AFA8A2E9C17676D993"
hx$=hx$&"82A6BB87B171D65190232E7BEA070C87738E9F"
hx$=hx$&"42915330CA9066752BC5DE4ABF8F4A05092321"
hx$=hx$&"0B015779F3CBCF4A67D871A9852555A75BE673"
hx$=hx$&"ECBF4B6CF4E7D6ACEF8B8DC8465E59BF92412B"
hx$=hx$&"C4094EFAD836CF23322AC20DB5E2E28399B3B5"
hx$=hx$&"57313B47E56A345A4D2CABCB1E69AFB1DEB635"
hx$=hx$&"05D5F6CB25DDC3A72AD48D8F461EF59C93B770"
hx$=hx$&"1D5CA8E0A0A7558C5AA970F6FB76FB8DCBB5A9"
hx$=hx$&"F1701BAEBCEDADF1D1A4B463BDA68DA1FD9EC3"
hx$=hx$&"6B3F5362E62AD2DD06EF1B7D48B19EC22DBEE0"
hx$=hx$&"792767DAD22DF7A37F6B56D3BFD1537F5D0428"
hx$=hx$&"8575DC0C93A7DFA7DD4F560796CDD031B668C3"
hx$=hx$&"17C1C43EB780ECB1D62D43C69395C3F65CCBC7"
hx$=hx$&"D1D3A1428F4ADFB3DD751C9CE75AC3BE63CAFC"
hx$=hx$&"8DA1C405C5DE3DDD9D21BC4E6AB107D738F3ED"
hx$=hx$&"1044505E8D68C865A36DA9B61D7C5F1DDF24FC"
hx$=hx$&"92D9C8DAA93632DB3F5F41AB29636B5E768A96"
hx$=hx$&"19A81B1A20AC6FEC6B48FFE7F0EC3F9ADF9A32"
hx$=hx$&"176E1BDEF677295FFFED8F3787E91778C67B27"
hx$=hx$&"86DAB1290CCC65058755DC0B9FB5740FAF836A"
hx$=hx$&"849FA27FBEA0B87E7093DD96BBB12B4F7BABD8"
hx$=hx$&"43F77254DE7881D3732717067B07EE9646355B"
hx$=hx$&"2951A56B52C8198A7C79103271E92862E208A2"
hx$=hx$&"E2FDEE477AC24CF117A3307EAD7016B12E022C"
hx$=hx$&"6636796D3B868D8589AFCF341A1E28B83BB802"
hx$=hx$&"15767B0FFC6215F6A2CC2A0DEBEAA38075A503"
hx$=hx$&"581BB327694BBC1E67560C98D52F282CE2337D"
hx$=hx$&"B7F9766E1142EE4EB3860F67E1DAA093974AC7"
hx$=hx$&"A8A647FCAAD9ABC386C28E89A9F690B24DF511"
hx$=hx$&"1D20A160B1E3C421DA82920848A95EAACC7F49"
hx$=hx$&"3E14FCDCB9858EF52896C6BA7EAF21EA0F8DF4"
hx$=hx$&"E7C6832762B8A191C7C1180E18C9E146F88783"
hx$=hx$&"BA366E768E8EA4AF093492131B4304A9208180"
hx$=hx$&"46325C586094383606DD5D40DDFD7467DD0022"
hx$=hx$&"093402CD49A021484623D14850AC803889E54B"
hx$=hx$&"1C210EC926165F1692F2A000F18E6E14A8075A"
hx$=hx$&"90407D90FCB9D39FCBAF46891C1920D3D19E28"
hx$=hx$&"9E60202E3200C924C921C804D0DD81EEFC6586"
hx$=hx$&"F8A60F46FC55221916213E8EC9972D67BAA7BB"
hx$=hx$&"B8F4DBB1BE727C7EEC04ED1C58E2DE712434F2"
hx$=hx$&"B32D4AE2B20F0E34A77CF3A09174677B50FC5F"
hx$=hx$&"936424D77F00512D9E15DD080000"
print "Creating file..."
option base 1
for t = 1 to len(hx$) step 2
d$=chr$(dec(mid$(hx$,t,2)))
file "davface.zip" write asc(d$)
next t
print "Unzipping..."
gunzip "davface.zip" to "davface.jpg"
file "davface.zip" delete
print "Done."
graphics
graphics clear 66/255,90/255,123/255
draw text "Touch to quit..." at 10,10
sprite "dav" load "davface.jpg"
sprite "dav" resize 300,300
sprite "dav" show
do
x=rnd(screen_width())
y=rnd(screen_height())
sprite "dav" at rnd(x),rnd(y)
pause .3
until touch_x(0)<> -1
sprite "dav" delete
text
end