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("\n00020: ");
            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. 运行时遇到如下出错提示
    1072864-20170603121428289-1957877184.png

解决方案:经排查发现是文件路径名错写为
1072864-20170603121435774-952436602.png

修改为如下问题解决
1072864-20170603121451711-2094280028.png

运行结果如下:
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做"|"运算,即可得到十六进制的二进制字节表示

转载于:https://www.cnblogs.com/lxy1997/p/6936939.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值