• MyOD课堂实践(5月31日)20155318


    MyOD课堂实践(5月31日)20155318

    编写MyOD.java 用java MyOD XXX实现Linux下od -tx -tc XXX的功能 (码云链接)

    代码

    import java.io.*;
    public class MyOD
    {
        public static void dump(InputStream src)
                throws IOException {
            try (InputStream input = src) {
                byte[][] data = new byte[50][1];
                byte[][] transf = new byte[50][1];
                int i=0, j=0, num;
                System.out.print("00010: ");
                while (input.read(data[i]) != -1) {
                    num = (int)data[i][0];
                    System.out.printf("%5s", Integer.toHexString(num));
                    i++;
                }
                System.out.print("
    00020: ");
                while (j<i) {
                    transf[j][0] = (byte)(data[j][0] - 0x30);
                    System.out.printf("%5d", transf[j][0]);
                    j++;
                }
                System.out.println();
            }
        }
        public static void main(String[] args) {
            FileInputStream fis = null;
            try {
                fis = new FileInputStream("D:/untitled20155318/20155318/myodtest.txt");
                dump(fis);
            }catch(Exception e) {
                System.out.println(e);
            }
        }
    }
    

    实验中遇到的问题

    1. 运行时遇到如下出错提示

    解决方案:经排查发现是文件路径名错写为

    修改为如下问题解决

    运行结果如下:
    myod

    知识补充

    • Java有使用Integer.parseInt()方法可以将二进制数转换为十进制数:
    import java.util.Scanner;
    class BinaryToDecimal {
        public static void main(String args[]){
           Scanner input = new Scanner( System.in );
           System.out.print("Enter a binary number: ");
           String binaryString =input.nextLine();
           System.out.println("Output: "+Integer.parseInt(binaryString,2));
        }
    }
    
    • 其他的进制转换方法

      • 十进制转成十六进制:String Integer.toHexString(int i)
      • 十进制转成八进制:String Integer.toOctalString(int i)
      • 十进制转成二进制:String Integer.toBinaryString(int i)
      • 十六进制转成十进制:Integer.valueOf("FFFF",16).toString()//不能处理带前缀的情况 0x
      • 八进制转成十进制:Integer.valueOf("76",8).toString() //前缀0可以被处理
      • 二进制转十进制:Integer.valueOf("0101",2).toString()
    • 在Java中字节与十六进制的相互转换:

    1. 二进制字节转十六进制时,将字节高位与0xF0做"&"操作,然后再左移4位,得到字节高位的十六进制A;将字节低位与0x0F做"&"操作,得到低位的十六进制B,将两个十六进制数拼装到一块AB就是该字节的十六进制表示。
    2. 十六进制转二进制字节时,将十六进制字符对应的十进制数字右移动4为,得到字节高位A;将字节低位的十六进制字符对应的十进制数字B与A做"|"运算,即可得到十六进制的二进制字节表示
  • 相关阅读:
    罗技 M280 无线鼠标 All In One
    How to use macOS to connect to Raspberry Pi without the monitor All In One
    lodashes All In One
    Raspberry Pi 5 All In One
    Vite All In One
    GitHub & All Contributors All In One
    Vite 运行 TypeScript 文件原理剖析 All In One
    VNC Viewer All In One
    python中 把每条FASTA序列分割成特定个数个字母一行的序列
    c 语言中实现数组元素的逆向排列
  • 原文地址:https://www.cnblogs.com/lxy1997/p/6936939.html
Copyright © 2020-2023  润新知