DataOuputStream的writeInt只写入了3个字节,请教是怎么回事

码农小兴 码农小兴 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
根据java文档描述
引用
Writes an int to the underlying output stream as four bytes, high byte first. If no exception is thrown, the counter written is incremented by 4.

writeInt这个方法会写入四个字节才对。
而通过抓包发现只写入了三个字节,如下图所示:


66666666的4字节16进制表示为0x03F940AA
而上图缺少了03这一字节
代码如下:
dataout.writeInt(66666666);


以下代码也是一样的结果:

len = 66666666;
dataout.write((byte)((len >>> 24) & 0xFF));
dataout.write((byte)((len >>> 16) & 0xFF));
dataout.write((byte)((len >>> 8) & 0xFF));
dataout.write((byte)((len >>> 0) & 0xFF));


以下代码打印数字66666666的4字节16进制表示:

public static void printHexString(byte[] b)
{
for (int i = 0; i < b.length; i++)
{
String hex = Integer.toHexString(b[i] & 0xFF);
if (hex.length() == 1)
{
hex = '0' + hex;
}
System.out.print(hex.toUpperCase() + " ");
}
System.out.println("");
}



int len = 66666666;
byte[] temp = {
(byte)((len >>> 24) & 0xFF),
(byte)((len >>> 16) & 0xFF),
(byte)((len >>> 8) & 0xFF),
(byte)((len >>> 0) & 0xFF)
};
printHexString(temp);



结果为:
引用
03 F9 40 AA



这几天一直被这个问题困扰,希望有人能指点迷津,谢谢!
...全文

相关推荐

高校技术转移办公室如何实现科技成果的动态管理与多维分析?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

BIZKEEN

自动化生产线控制与维护(基于数字孪生)课件+联调总图+MCD和程序

自动化生产线控制与维护(基于数字孪生)课件+联调总图+MCD和程序

Bryan Ding

SiLan-EAP-AOI-Test-Case.xlsx222

SiLan-EAP-AOI-Test-Case.xlsx222

2601_97229213

电子线路设计与PCB制作 教学课件+教学设计+课后习题

电子线路设计与PCB制作 教学课件+教学设计+课后习题

Bryan Ding

JavaSwing学生成绩管理系统源码

这是一份基于 Java Swing + JDBC + MySQL 的学生成绩管理系统课程设计完整资料,包含实验报告(Markdown、HTML、PDF 三种格式)、全部 Java 源码、4 张运行截图、答辩 PPT,以及建库脚本 schema.sql 和 MySQL JDBC 驱动 jar。源码按界面层、业务层、数据访问层三层划分,SQL 集中在一个类里,不依赖 Maven 或 Tomcat,IDEA 或命令行即可编译运行。 程序登录后进入主窗口,分管理员和教师两种角色,主要功能包括:学生信息增删改查(支持按学号或姓名模糊搜索,输一个"张"字就能筛出全部姓张的学生)、成绩录入与修改(同一学生同一门课重复录自动覆盖旧分)、按班级统计平均分与及格率、按课程统计平均分/最高最低分/及格率、按三门课总分排名、一键导出 Excel 可直接打开的 CSV。 几个值得参考的实现点:所有 SQL 集中在 ScoreService 一个类里,以后换数据库只改数据访问层,界面代码一行不动;连不上 MySQL 时弹中文提示让用户先启动服务,而不是甩一堆英文异常栈;分数限制在 0 到 100、空输入、字母输入都弹窗拦下;删学生时级联删成绩,不留孤儿数据;CSV 导出带 BOM,Excel 直接打开不乱码。 适合正在做 Java 程序设计、数据库原理课程设计的学生,以及想学习"Swing + JDBC + MySQL"桌面小项目完整分层写法的自学者。拿到手后先执行 schema.sql 建库并塞入测试数据,再改 config.properties 里的数据库账号密码,把 lib 下的驱动 jar Add as Library,运行 com.score.Main 即可。

小鹿( ﹡ˆoˆ﹡ )
评论 6
收藏 已收藏
分享
返回顶部
码农小兴
Java 51,407 成员 86,130 内容