我需要将一个十进制数,写成数值型16进制数到文件里!
因为不能象C那样灵活控制输出,不知道有什么好的方法!写了一个方法,觉得很笨!
另外使用下面的方法会出现大于128(二进制:80)的十进制数就写异常,总是只能写成3f!public static void writeFile() throws FileNotFoundException, IOException {
        File ofile = new File("D:/tt.txt");
        FileWriter fw = new FileWriter(ofile);        StringBuffer sb = new StringBuffer();
        String sBase = Integer.toHexString(127);
        if (sBase.length() % 2 != 0) {
            sb.append(0);
        }
        sb.append(sBase);
        for (int i = 0; i + 1 < sb.length(); i += 2) {
            String str = sb.substring(i, i + 2);
            int b = Integer.parseInt(str, 16);
            fw.write(b);
        }
        fw.flush();
        fw.close();
    }

解决方案 »

  1.   

    如果只是要将0-127的十进制写成16进制的码到文件,就这样简单,你可以试试(你可用ultra-edit打开文件试试)
    public static void writeFile() throws FileNotFoundException, IOException {
        File ofile = new File("D:/tt.txt");
        FileWriter fw = new FileWriter(ofile);
            for(int i=0;i<128;i++)
               fw.write(i);
        fw.flush();
        fw.close();
    }
      

  2.   

    java.io.DataOutputStreamJAVA 的 IO 机制非常完善,关键在于理解过滤器流,各种高级功能都是通过过滤器流提供的。
      

  3.   

    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.PrintStream;
    import java.util.ArrayList;
    import java.util.List;public class FileUtil { public static void write(List numberList, String fileName)
    throws FileNotFoundException, IOException {
    FileOutputStream stream = new FileOutputStream(fileName);
    PrintStream out = new PrintStream(stream);
    for (int i = 0; i < numberList.size(); i++) {
    Integer temp = (Integer) numberList.get(i);
    out.print("OCT:" + temp.intValue() + " HEX:");
    out.print(Integer.toHexString(temp.intValue()));
    out.println();
    }
    stream.close();
    out.close();
    } public static void main(String[] args) {
    String dst = "d:\\temp.txt";
    try {
    List list = new ArrayList();
    for (int i = 0; i < 1000; i++)
    list.add(new Integer(i));
    FileUtil.write(list, dst);
    } catch (FileNotFoundException fE) { } catch (IOException ioE) { }
    System.out.println("write over!");
    }}