资讯专栏INFORMATION COLUMN

java中构造字节流的一种实现

HtmlCssJs / 1367人阅读

摘要:中构造字节流的一种实现专门创建一个类来保存指定数提示数据超了设置一个值到第一位将列表中的数据合并成一个数据

java中构造字节流的一种实现

import java.util.ArrayList;
import java.util.List;

/**
 * Created by kaven on 2018/4/2.
 */
public class TestBytes {

    /**
     * 专门创建一个类来保存指定byte数
     */
    public class MyByte {
        byte[] data;

        MyByte(int n) {
            data = new byte[n];
        }

        void setData(String s) {
            byte[] tmp = s.getBytes();

            // 提示数据超了
            if (tmp.length > data.length) {
                System.err.print("too many data");
            }

            for (int i = 0; i < this.data.length && i < tmp.length; i++) {
                data[i] = tmp[i];
            }
        }

        // 设置一个值到第一位
        void setData(int i) {
            data[0] = (byte) i;
        }

        byte[] getByte() {
            return data;
        }

        int size() {
            return data.length;
        }
    }


    void login() {

        MyByte msgType = new MyByte(1);
        MyByte userId = new MyByte(16);
        MyByte msg = new MyByte(12);

        msgType.setData(1);
        userId.setData("1");
        msg.setData("222");

        List list = new ArrayList();
        list.add(msgType);
        list.add(userId);
        list.add(msg);

        byte[] res = join(list);
        System.out.print(res.toString());
    }

    /**
     * 将列表中的数据合并成一个数据
     * @param list
     * @return
     */
    private byte[] join(List list) {
        int count = 0;
        for (int i = 0; i < list.size(); i++) {
            count += list.get(i).size();
        }
        byte[] res = new byte[count];

        int start = 0;
        for (int i = 0; i < list.size(); i++) {
            byte[] tmp = list.get(i).getByte();
            for (int j = 0; j < tmp.length; j++) {
                res[start] = tmp[j];
                start += 1;
            }
        }
        return res;
    }

    public static void main(String args[]) {
        TestBytes a = new TestBytes();
        a.login();
    }

}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68928.html

相关文章

  • 第十一章-IO流#yyds干货盘点#

    摘要:是一个系统支持的所有字符的集合,包括各国家文字标点符号图形符号数字等字符集简体中文码表。支持中国国内少数民族的文字,同时支持繁体汉字以及日韩汉字等字符集为表达任意语言的任意字符而设计,是业界的一种标准,也称为统一码标准万国码。 1 File1.1 File类的概述和构造方法File: 它是文件和目录路径名的抽象...

    不知名网友 评论0 收藏0
  • java类加载机制

    摘要:在加载阶段,虚拟机要完成件事情通过一个类的全限定名来获取定义此类的二进制字节流。前面的阶段中,除了加载的时候,可以由用户指定自定义类加载器之外,别的都是由虚拟机主导控制。 java类加载机制 代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,确实编程语言发展的一大步 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直...

    garfileo 评论0 收藏0
  • Java 虚拟机总结给面试的你(

    摘要:验证过程验证过程的目的是为了确保文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。二虚拟机字节码执行引擎虚拟机的执行引擎自行实现,可以自行制定指令集与执行引擎的结构体系。 本篇博客主要针对Java虚拟机的类加载机制,虚拟机字节码执行引擎,早期编译优化进行总结,其余部分总结请点击Java虚拟总结上篇 。 一.虚拟机类加载机制 概述 虚拟机把描述类的数据从Clas...

    MRZYD 评论0 收藏0
  • Java IO

    摘要:分类一按操作方式类结构字节流和字符流字节流以字节为单位,每次次读入或读出是位数据。该对象并不是流体系中的一员,其封装了字节流,同时还封装了一个缓冲区字符数组,通过内部的指针来操作字符数组中的数据。 分类一:按操作方式(类结构) 字节流和字符流: 字节流:以字节为单位,每次次读入或读出是8位数据。可以读任何类型数据。 字符流:以字符为单位,每次次读入或读出是16位数据。其只能读取字符类...

    Salamander 评论0 收藏0
  • JVM实战---类加载的过程

    任何程序都需要加载到内存才能与CPU进行交流 同理, 字节码.class文件同样需要加载到内存中,才可以实例化类 ClassLoader的使命就是提前加载.class 类文件到内存中 在加载类时,使用的是Parents Delegation Model(溯源委派加载模型) Java的类加载器是一个运行时核心基础设施模块,主要是在启动之初进行类的加载、链接、初始化 showImg(https://s...

    bladefury 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<