java 报文长度_关于报文长度的理解
不知不觉做接口系统也有较长时间,对接口系统来说,会遇到各式各样的报文如8583报文、类8583报文及各种软件商家自定义的报文。
面对交易流程:接收请求报文----》处理报文-----》接收响应报文。
接收请求报文、发送响应报文因是tcp传送,基本上会在报文最前端加入一个报文长度(表示之后的报文有长,以便对方的机器进行接收)。
报文长度的表示方法中较常见的如:
1)用n(一般为4、6)字节来表示报文长度;即也称字符串表示报文长度。(即是一个右靠齐的方式,左补数字0)---------------这种方式是最简单的也是最常见的。
如:报文长度为123.
当n=4时:“0123”
当n=6时:“000123”
2)可能你会碰到下面的这种形式
消息头格式
参数名称
类型
长度
备 注
1
消息总长度
INTEGER
4
消息长度(字节)
2
协议版本
ASCII
4
与协议的版本同步,如“0101”代表v1.01 咋看消息总长度的表示方式:你就会有些不懂,(特别当你是用C语言的人时,则会很吃惊.书上int不是2字节嘛,不同机器可能会不样处理,这里就不多说)。
其实可以这样理解,目前所处理的都是以字节(不必去区分什么大端、小端的问题)做为最小单位来存储数据。所以当看到上面的长度是一个INTEGER,用4个字节来存。理解为:是用4*8=32比特位来存储INTEGER变量,高位在低字节(如C语言表示:char length[4],length[0]存储最高的8位,length[3]存储最低的8位)。
如:报文长度是len=295;
C语言表示:
caMsgBuf[0] = (iLen & 0xff000000) >> 24;
caMsgBuf[1] = (iLen & 0x00ff0000) >> 16;
caMsgBuf[2] = (iLen & 0x0000ff00) >> 8;
caMsgBuf[3] = (iLen & 0x000000ff); JAVA表示:
byte[] buf = new byte[4];
buf[0] = (byte)((l & 0xff000000) >> 24);
buf[1] = (byte)((l & 0xff0000) >> 16);
buf[2] = (byte)((l & 0xff00) >> 8);
buf[3] = (byte)(l & 0xff);
从上可以看出不同语言的处理方式基本相同。
3)其他较件厂商的基本也是以二的变种。仔细分析,没有什么问题。
java 报文长度_关于报文长度的理解相关推荐
- 线性代数 向量长度_用户定义长度的向量| 使用Python的线性代数
线性代数 向量长度 Prerequisite: Defining a vector 先决条件: 定义向量 Linear algebra is the branch of mathematics con ...
- python怎么打印列表长度_打印知道长度和宽度的钻石(Python)
我需要使用python输入长度来打印钻石.我已经使它能够检查宽度(取决于它是奇数还是偶数),并确保输入的数字正确.但是我在打印结果时遇到了问题. 这是我得到的: length : 10 * *** * ...
- jvm对于java的意义_谈谈对JVM的理解
JVM可谓是学习JAVA基础中的基础了,但仍有不少同学对JVM概念还是比较模糊,甚至没有听说过,对java的理解也只是在基础语法 层面,本文就将对JVM进行初步介绍,因篇幅所限,只能介绍JVM基础,如 ...
- java 死锁演示_史上最通俗理解的Java死锁代码演示
死锁的概念 知识储备 对象锁:Java一切皆对象,每个类都有一个class文件.由class文件可以new出对象,我们简单认识 下java对象,对象有个对象头信息,也就是这个对象概述,其中一条信息就是 ...
- java socket发送定长报文_一个基于TCP协议的Socket通信实例
原标题:一个基于TCP协议的Socket通信实例 1. 前言 一般接口对接多以http/https或webservice的方式,socket方式的对接比较少并且会有一些难度.正好前段时间完成了一个so ...
- java数据长度_存储单位(字节)
所谓的占用字节数 就是申请内存的时候所占的空间大小记住一句话:计算机输入的符号最小1个字节,1字节 = 8bit (1bit就是二进制的1位) 8bit 表示的最大内存 等于 二进制的 1111-11 ...
- JAVA建行银企直连报文加解密
接上一篇密钥交换之后获得银行提供的:银行RSA签名公钥RSA.bank.public.key,接受报文验签使用:银行DES加密私钥DES.bank.private.key,加密报文使用.还有之前自己生 ...
- java发送iso8583报文接口框架,ISO8583报文工具类(组装和解析报文)
package com.lsy.common.util; import java.io.FileInputStream; import java.io.UnsupportedEncodingExcep ...
- tcp报文格式_面试必备TCP(一):三次握手
TCP大家都知道是什么东西,这个协议的具体报文格式如下: 标志位 URG:指示报文中有紧急数据,应尽快传送(相当于高优先级的数据). PSH:为1表示是带有push标志的数据,指示接收方在接收到该报文 ...
最新文章
- c语言联合体作用,C语言 联合体(Unions)
- 一个网站让你系统的入门脑机接口和神经科学
- 使用jrtplib打包发送h264数据,关使用vlc|mplayer播放
- 一文带你理解云原生|云原生全景指南
- docker入门之容器网络
- 锁屏界面显示某些设置已隐藏_iOS 14 隐藏功能,只要轻点手机背面就能截屏
- PHP 规划(收藏的一些好博文)
- MySQL-->索引-->如何创建索引,创建原则
- python解释器使用函数可以进入帮助系统_使用help()命令可以进入帮助系统。
- 网上赚钱的平台哪个好?7个方式总有你喜欢的!
- 美学心得(第一百七十九集) 罗国正
- 大秦帝国之崛起的几点启发
- kali linux Live Usb Encrypted Persistence配置教程
- 学生学籍管理系统_管理员登陆对学生的信息进行操作
- 想要搭建个人博客?我调研了 100 来个 Java 开源博客系统,发现这 5 个最好用!......
- Python解析DBLP的xml文件
- 为什么我要反对北大青鸟[转自老赵]
- 在后台定时连续截屏的工具 —— 定时执行专家
- 作为一名程序员我不忘初心,Android岗
- 谷歌SEO发展的八大趋势
热门文章
- 吃透Chisel语言.18.Chisel模块详解(五)——Chisel中使用Verilog模块
- 2016电商重大并购名单:未来并购会更频繁
- vivoiqooz1鸿蒙系统,vivoiqooz1x参数配置详情_iqoo z1x详细参数跑分
- R语言kmeans聚类提示:Warning message:10迭代仍没有聚合
- 《Windows程序设计》读书笔七 鼠标
- 给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1
- java.io.IOException: unexpected end of stream on https://xxx.xxx.xxx.xxx:84/
- 《新文学》风吹过,雨无痕
- 互联网金融大事件,从泛亚到e租宝敲响的警示钟?
- systemd service 指定目录 WorkingDirectory