`

javaSE字符串

阅读更多

很多场景的编程都是回归到最基本的基础应用:字节数组输入流ByteArrayInputStream的应用

样例:
    00000154***********(某协议传输的内容1)00012323*******************(某协议传输的内容2) … 00000859******(某协议传输的内容3)
   
其中,连续8byte的数字代表业务信息协议内容的长度,后边“******”即为某协议传输的消息内容(UTF-8编码)
说明:
    此处8byte意为连续8个字符,每个字符内存储一个数字,连续8个字符共同代表一个数字

按照样例进行通信传输,到接收方只要解出对应的协议内容部分。

方法一:

public static List<String> readMessage(String message) throws Exception {
        List<String> list = new ArrayList<String>();
       
        while ( true ) {
            if(message == null || message.equals("")) {
                break;
            }
            String strLen = message.substring(0, 8);
            int len = Integer.parseInt(strLen);
            list.add(message.substring(8, 7+1+len));
            message = message.substring(8+len);
           
        }
        return list;
    }

方法二:

public static List<String> readMessage(byte[] all) throws Exception {
        List<String> list = new ArrayList<String>();
        ByteArrayInputStream input = new ByteArrayInputStream(all);
        byte[ ] b = new byte[8];
        while (true) {
            String temp = null;
            String msgString = null;
            if (input.read(b) == -1)
                break;
            temp = Utils.byteToString(b);
            if (temp == null)
                continue;
            int msglength = Integer.parseInt(temp.trim());
            byte[] tempb = new byte[msglength];
            if (input.read(tempb) == -1)
                break;
            if (tempb != null) {
                msgString = Utils.byteToString(tempb);
                if (!Utils.IsNullStr(msgString))
                    list.add(msgString);
            }
        }
        return list;
    }

分享到:
评论

相关推荐

    JavaSE 字符串的总结

    JavaSE中的字符串是编程中非常基础且重要的概念,主要用于存储和操作文本数据。字符串在Java中是不可变的,这意味着一旦创建了一个字符串对象,就不能更改它的内容。它们被表示为`String`类型,并且属于核心库`java....

    java生成二维码以及二维码转base64字符串给前端

    在Java开发中,生成二维码和将二维码转换为Base64字符串是常见的需求,尤其是在与前端交互时。这个项目提供了一种方便的方式,通过Maven依赖来实现这些功能,并且包括了一个工具类,使得操作更加简单易用。接下来,...

    用javaSE的swing做的计算器,可解析字符串

    本文将深入探讨如何使用Java Swing构建一个功能齐全的计算器,它能够解析带有运算符的字符串并执行计算。 首先,让我们了解Java Swing的基础。Swing是Java的一个图形用户界面工具包,它是AWT(Abstract Window ...

    Java SE编程入门教程 String字符串(共27页).pptx

    Java SE编程入门涉及众多基础知识,其中包括对字符串(String)的深入理解和使用。字符串在Java中扮演着重要的角色,因为它们在日常编程中几乎无处不在,无论是处理用户输入、读写文件还是进行网络通信。以下是对Java ...

    javase课件

    | `split(String regex)` | 根据给定的分隔符字符串拆分字符串。 | | `substring(int beginIndex)` | 截取从指定索引到结尾的子字符串。 | | `substring(int beginIndex, int endIndex)` | 截取从指定起始索引到...

    根据字符串生成二维码

    &lt;artifactId&gt;javase &lt;version&gt;3.4.1 ``` 如果是在非Maven项目中,可以直接下载ZXing的jar包并导入到项目的类路径中。 接下来,我们将介绍如何使用ZXing生成二维码的步骤: 1. **创建BitMatrix对象**:...

    一种简单的字符串压缩算法

    标题中的“一种简单的字符串压缩算法”指的是在计算机科学中,为了节省存储空间和提高传输效率,对字符串数据进行编码优化的技术。这种算法通常基于字符频率和编码长度的权衡,目的是在保持数据完整性的前提下,减少...

    一个字符串包含了空个等标点符号,计算出现次数最多的字母和该字母出现次数 开发提示:可以使用Map,key是字母,value是该字母的次数

    一个字符串包含了空个等标点符号,计算出现次数最多的字母和该字母出现次数 开发提示:可以使用Map,key是字母,value是该字母的次数

    JavaSE 7 API DOC

    5. **字符串平铺**:使用`String`类的`join()`方法可以方便地将多个字符串连接在一起,提高了字符串处理的效率。 6. **菱形运算符**:在创建匿名内部类或泛型实例时,编译器会自动推断出父类或接口的类型参数,无需...

    javaSE常用相关技术

    StringBuffer是Java中用于操作字符串的一个类,它允许字符串内容在创建后进行修改,适合需要频繁修改字符串内容的场景。 - **特点**: - 可变性:可以在原有基础上添加、删除或替换字符。 - 线程安全:内部方法被...

    JavaSE之StringBuilder类与String类

    - **字符串拆分**:使用`split()`方法来根据某个分隔符将字符串拆分成字符串数组。 ```java String s = "apple,banana,grape"; String[] fruits = s.split(","); // fruits数组包含"apple", "banana", "grape" ...

    2Java SE(上).doc

    首先该方法会使用给定的字符串与当前字符串进行全匹配,当找到位置后,会将给 定字符串中第一个字符在当前字符串中的位置返回。常用来查找关键字使用。 重载方法: int lastIndexOf(String str):返回给定的...

    javaSE1.7.zip

    2. **字符串in switch**:现在可以在switch语句中使用字符串,这样可以方便地处理枚举类型或基于字符串的条件。 3. **尝试-with-resources**:这是一个新的语句结构,用于自动关闭在try块中打开的资源,如文件流,...

    JavaSE第一章使用基础API.docx

    JavaSE 基础 API 知识点总结 JavaSE 是 Java 标准版的简称,全称为 Java ...修改字符串对象的操作不会产生新的字符串对象。两个类的区别在于,StringBuffer 是线程安全的,在非多线程环境下应优先使用 StringBuilder。

    JavaSE总结文档.rar

    - **字符串处理**:String类的常用方法,如concat、substring、indexOf等,以及StringBuilder和StringBuffer的使用。 2. **JavaSE基础知识总结之二**: - **集合框架**:ArrayList、LinkedList、HashSet、HashMap...

    javase基础

    通过以上详细解析,我们可以更好地理解JavaSE中的基本概念和技术要点,如作用域、格式化输出、字符串拼接、封装、静态特性、继承以及多态等。这些知识点不仅是Java编程的基础,也是深入学习面向对象编程的关键。

    JavaSE阶段测试题库.docx

    11. **常量池**:Java的字符串常量池存放字符串字面量,当创建一个新字符串时,如果该字符串的值已经在常量池中,则不会创建新对象,而是返回常量池中的引用。如`String str = new String("hello");`会在堆中创建一...

    javase01学习文档

    `StringBuilder` 类提供了可变字符串的功能,相比于`String`,在频繁进行字符串拼接时效率更高。它提供了如下方法: 1. `append`: 追加一个字符串到现有的StringBuilder。 2. `insert`: 在指定位置插入一个字符串。 ...

    Javase 技术代码测试

    枚举提供了类型安全,避免了使用整数或字符串常量可能导致的错误。枚举还可以包含方法和字段,甚至实现接口,具有很高的灵活性。 6. **IO流**:Java的IO流库支持对文件和网络的数据输入输出操作。流分为字节流和...

Global site tag (gtag.js) - Google Analytics