Binary to ASCII em Linux OK, mas no Windows não funciona

2 respostas
rafael_lippert

Olá pessoal,
tenho um script terceirizado que converte Binário para ASCII no linux perfeitamente, porém, peguei este script e rodei no windows e ele não funciona corretamente, deixa de compilar algumas linhas mas sem acusar erro algum.
Alguem teria uma idéia do que poderia ser?

O script é este:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package philips;

                                                                     
                                                                     
                                                                     
                                             
// Decompiled by DJ v3.10.10.93 Copyright 2007 Atanas Neshkov  Date: 11/6/2008 14:01:38
// Home Page: http://members.fortunecity.com/neshkov/dj.html  http://www.neshkov.com/dj.html - Check often for new version!
// Decompiler options: packimports(3) 
// Source File Name:   PhilipsConverterLinux.java

import java.io.*;

public class PhilipsConverterLinux
{

    public static int binaryToAscii(File file, File file1)
        throws IOException
    {
        if(!file.exists())
            throw new IOException("Arquivo n\343o encontrado!");
        if(!file1.exists())
            file1.createNewFile();
        int i = 0;
        try
        {
            System.out.println((new StringBuilder()).append("[").append(file.getName()).append("]").toString());
            if(file.length() != 0L)
            {
                String s = "";
                char ac[] = getBytesFromFile(file);
                System.out.println((new StringBuilder()).append("Convertendo arquivo com ").append(ac.length).append(" bytes").toString());
                int j = 128;
                FileOutputStream fileoutputstream = new FileOutputStream(file1);
                while(j < ac.length && j + 54 < ac.length) 
                {
                    boolean flag = false;
                    if(ac[j + 54] == '\260')
                        flag = true;
                    if(ac[j + 32] == '\260')
                        flag = true;
                    if(!flag)
                        while(ac[j] != '\260' && j < ac.length - 54) 
                        {
                            j++;
                            System.out.print(".");
                        }
                    String s2 = (new StringBuilder()).append(lowerNibble(ac[j++])).append(higherNibble(ac[j])).toString();
                    String s1 = (new StringBuilder()).append(lowerNibble(ac[j++])).append(higherNibble(ac[j])).toString();
                    String s3 = lowerNibble(ac[j++]);
                    if(s3.compareTo("1") == 0 && ac.length - j > 54)
                    {
                        String s4 = (new StringBuilder()).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).toString();
                        String s6 = (new StringBuilder()).append(toHexa(ac[j++])).append(toHexa(ac[j++])).toString();
                        String s8 = (new StringBuilder()).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).toString();
                        String s10 = (new StringBuilder()).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).toString();
                        String s12 = (new StringBuilder()).append(higherNibble(ac[j++])).append(higherNibble(ac[j++])).toString();
                        String s14 = toHexa(ac[j++]);
                        String s16 = (new StringBuilder()).append(toHexa(ac[j++])).append(toHexa(ac[j++])).toString();
                        String s18 = higherNibble(ac[j++]);
                        String s20 = (new StringBuilder()).append(toHexa(ac[j++])).append(higherNibble(ac[j++])).toString();
                        String s22 = higherNibble(ac[j++]);
                        String s24 = higherNibble(ac[j++]);
                        String s25 = (new StringBuilder()).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).toString();
                        String s26 = (new StringBuilder()).append("* #").append(s2).append(s1).append(s3).append(s4).append(s6).append(s8).append(s10).append(s12).append(s14).append(s16).append(s18).append(s20).append(s22).append(s24).append(s25).append("\r\n").toString();
                        fileoutputstream.write(s26.getBytes("ASCII"));
                        fileoutputstream.flush();
                        j++;
                        i++;
                    } else
                    if(s3.compareTo("2") == 0)
                    {
                        String s5 = "";
                        for(int k = 0; k < 10; k++)
                            s5 = (new StringBuilder()).append(s5).append(toHexa(ac[j++])).toString();

                        String s7 = higherNibble(ac[j++]);
                        String s9 = higherNibble(ac[j++]);
                        String s11 = higherNibble(ac[j++]);
                        String s13 = higherNibble(ac[j++]);
                        String s15 = (new StringBuilder()).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).toString();
                        String s17 = (new StringBuilder()).append(toHexa(ac[j++])).append(higherNibble(ac[j++])).toString();
                        String s19 = (new StringBuilder()).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).toString();
                        String s21 = (new StringBuilder()).append(toHexa(ac[j++])).append(toHexa(ac[j++])).append(toHexa(ac[j++])).toString();
                        String s23 = (new StringBuilder()).append("* #").append(s2).append(s1).append(s3).append(s5).append(s7).append(s9).append(s11).append(s13).append(s15).append(s17).append(s19).append(s21).append("\r\n").toString();
                        fileoutputstream.write(s23.getBytes("ASCII"));
                        fileoutputstream.flush();
                        j++;
                        i++;
                    } else
                    {
                        while(ac[j] != '\260' && j < ac.length - 54) 
                        {
                            j++;
                            System.out.print("*");
                        }
                    }
                }
                fileoutputstream.close();
                System.out.println((new StringBuilder()).append(" - Bilhetes:").append(i).toString());
            }
            if(file.length() > 3000L && file.length() > file1.length())
                throw new IOException("CHECK: Tamanho deve ser verificado!");
            if(file.length() > 3000L && (file.length() - 256L) / 54L > (long)i)
                throw new IOException("CHECK: N\372mero de bilhetes deve ser verificado!");
        }
        catch(Exception exception)
        {
            exception.printStackTrace();
            throw new IOException("Erro de convers\343o!");
        }
        return i;
    }

    private static String lowerNibble(char c)
    {
        String s = Integer.toString(c, 16);
        if(s.length() < 2)
            s = (new StringBuilder()).append("0").append(s).toString();
        return (new StringBuilder()).append("").append(change(s.charAt(1))).toString();
    }

    private static String higherNibble(char c)
    {
        String s = Integer.toString(c, 16);
        if(s.length() < 2)
            s = (new StringBuilder()).append("0").append(s).toString();
        return (new StringBuilder()).append("").append(change(s.charAt(0))).toString();
    }

    private static String toHexa(char c)
    {
        String s = Integer.toString(c, 16);
        if(s.length() < 2)
            s = (new StringBuilder()).append("0").append(s).toString();
        return (new StringBuilder()).append("").append(change(s.charAt(0))).append(change(s.charAt(1))).toString();
    }

    private static char change(char c)
    {
        String s = (new StringBuilder()).append("").append(c).toString();
        s = s.toUpperCase();
        if(s.compareTo("F") == 0)
            return ' ';
        if(s.compareTo("A") == 0)
            return '*';
        else
            return c;
    }

    public static char[] getBytesFromFile(File file)
        throws IOException
    {
        BufferedReader bufferedreader = new BufferedReader(new FileReader(file));
        long l = file.length();
        int i = (int)(l / 128L);
        long l1 = l - (long)i;
        char ac[] = new char[(int)l1];
        int j = 0;
        int k = bufferedreader.read();
        checkIn(k);
        for(int k1 = 0; k1 < i; k1++)
        {
            for(int i2 = 0; i2 < 127; i2++)
            {
                int i1 = bufferedreader.read();
                checkIn(i1);
                ac[j++] = (char)i1;
            }

            int j1 = bufferedreader.read();
        }

        bufferedreader.close();
        if(j + 128 < ac.length)
        {
            System.out.println((new StringBuilder()).append("Offset:").append(j).append(" Length:").append(ac.length).toString());
            throw new IOException((new StringBuilder()).append("Could not completely read file ").append(file.getName()).toString());
        } else
        {
            return ac;
        }
    }

    private static void checkIn(int i)
        throws IOException
    {
        if(i == -1)
            throw new IOException("ERRO no stream!");
        else
            return;
    }

    private PhilipsConverterLinux()
    {
    }

    public static void main(String args[])
    {
        if(args.length != 2)
        {
            try
            {
                //String s = (new StringBuilder()).append("/home/publico/ConverteArquivoLinux/arquivo_binario/").append(args[0]).toString();
                //String s = (new StringBuilder()).append(args[0]).toString();
                String s = "C:\\java\\philips\\bilv7.u01";
                //String s1 = (new StringBuilder()).append("/home/publico/ConverteArquivoLinux/arquivo_texto/").append(args[1]).toString();
//                String s1 = (new StringBuilder()).append(args[1]).toString();
                String s1 = "C:\\java\\philips\\resultado.u01";
//                System.out.println(args[0]);
  //              System.out.println(args[1]);
                binaryToAscii(new File(s), new File(s1));
            }
            catch(IOException ioexception)
            {
                ioexception.printStackTrace();
                System.out.println("N\343o foi poss\355vel ler o arquivo fonte ou escrever o arquivo destino");
            }
        } else
        {
            System.out.println("Favor informar o arquivo bin\341rio e o arquivo texto.");
            System.exit(0);
        }
    }
}

Obrigado

2 Respostas

jmoreira

Putz!
230 linhas de códigos para analisar, compadre? Ai fica díficil.

rafael_lippert

Bah pois é,
mas daí se eu não posto o código diriam: “cadê o código pra nóis vê?” rsrs… então já passei a situação e o código pra ver se alguem que entenda me ajude!

Criado 23 de julho de 2008
Ultima resposta 24 de jul. de 2008
Respostas 2
Participantes 2