'Read Text from a Binary file Dim str_cLine$, FileName$ Dim SizeOfFile as INTEGER Dim myTimer as Single str_cLine$ = "All Files(*.*)|*.*" FileName$ = GETFILENAME$("OPEN", str_cLine$,0,NULL,OFN_LONGNAMES | OFN_EXPLORER,APPEXEPATH$) SizeOfFile = LOF(FileName$) Dim Dynamic myBins[SizeOfFile + 1001] as CHAR 'Dynamic Open FileName$ FOR BINARY AS hFile seek hFile, 0 get$ hFile, myBins$, SizeOfFile 'Print "Time: " & str$(TIMER - myTimer) Dim k, b Dim Dynamic ret[0] as CHAR ReDim ret[SizeOfFile * 4] as CHAR Print str$(SizeOfFile) myTimer = TIMER For INTEGER s = 1 to SizeOfFile Concat(ret$, MakeHex(myBins[s])) ' + 84090)) '3.5 secs 'Concat(ret$, Hex$(myBins[s] % 255)) Concat(ret$, " ") 'ret$ = join(3,ret$,MakeHex(myBins[s]) ," ") k++ If NOT imod (s,10) then b=len(ret$) ret[b]=13 ret[b+1]=10 ret[b+2]=0 End If ' END IF Next s myTimer = TIMER - myTimer Print " &" & ret$ & ","; Print crlf$ & "Time MakeHex: " & str$(myTimer) Print "Total: " & str$(SizeOfFile) & " Found: " & str$(k) k = 0 ret$ = "" myTimer = TIMER 'reset myTimer For INTEGER r = 1 to SizeOfFile Concat(ret$,HEXX2$(myBins[r],2))' +84090,6)) Concat(ret$, " ") 'ret$ = join(3,ret$,HEXX2$(myBins[r],2)," ") k++ If NOT imod (r,10) then b=len(ret$) ret[b]=13 ret[b+1]=10 ret[b+2]=0 End If Next r Print crlf$ & "Time HEXX2$: " & str$(TIMER - myTimer) Print "Total: " & str$(SizeOfFile) & " Found: " & str$(k) 'Print " &" & ret$ & ","; CLOSE hFile REPLACE "exe" WITH "xtt" IN FileName$ Open FileName$ FOR BINARY NEW AS hFile Dim SizeOfData as integer SizeOfData = SizeOfFile + 1000 Put$ hFile, myBins$, SizeOfData CLOSE hFile FREE myBins$ 'Print "Time: " & str$(TIMER - myTimer) PAUSE END Function MakeHex(f as LONG) as string STATIC sRet[32] as CHAR CONST myHexString$ = "0123456789ABCDEF" STATIC k, places, y places = 2 y = 0xFF Do until f <=y If f > y then y = y * 0x100 places = places + 2 END IF LOOP FOR INTEGER i = places - 1 TO 0 STEP -1 k = f % 16 sRet[i] = myHexString$[k] f = f / 16 NEXT i sRet[places] = 0 'add chr$(0) to the end of the string FUNCTION = sRet End Function FUNCTION HEXX(uVal AS CONST UINT, iDigits AS CONST INTEGER) AS STRING STATIC sBuffer[1024+1] AS CHAR CONST sHexData$ = "0123456789ABCDEF" STATIC n AS UINT STATIC k 'dim newstr$ n = uVal FOR INTEGER i = iDigits - 1 TO 0 STEP -1 k = n % 16 sBuffer[i] = sHexData[k] n = n / 16 NEXT FUNCTION = sBuffer END FUNCTION $HEADER // ************************************************* // Hex(number in, number of hex places) // ************************************************* char * HEXX2(CONST UINT uVal, CONST int iDigits) { static char sBuffer[1024+1]; static char sHexData[17]="0123456789ABCDEF"; static UINT n; static int i; static int k; n=uVal; for(i=iDigits-1; i>=0; i-=1) { k=n % 16; sBuffer[i]=sHexData[k]; n/=16; } return sBuffer; } $HEADER 'print "POWER CYCLE:"' ' k = 0 ' ret$ = "" ' CLEAR (ret$) ' global p as char ptr ' p=ret ' dim a$ ' dim b ' myTimer = TIMER 'reset myTimer ' global sBuffer2[1024+1] AS CHAR ' CONST sHexData$ = "0123456789ABCDEF" ' global n2 AS UINT ' global k2 ' For INTEGER i = 1 to SizeOfFile ' n2 = myBins[i] ' FOR integer i = 5 TO 0 STEP -1 ' k2= n2 % 16 ' sBuffer2[i] = sHexData[k2] ' n2 = n2 / 16 ' NEXT ' '------------------------- ' '------------------------- ' p$=sBuffer2$ ' p+=len(sBuffer2$) ' p$=" " ' p+=1 ' ' ' Concat(ret$,sBuffer2$)' +84090,6)) ' ' Concat(ret$, " ") ' so: ' CLEAR (ret$) before the FOR LOOP starts ' global p as char ptr ' then instead of concat ' p$=sBuffer2$ ' p+=len(sBuffer2$) ' p$=" " ' p+=1 ' also make sure p=ret