当前位置: 首页 > news >正文

字符串填充到指定长度

一、需求

在传输一个文件的时候,传输的是二进制数据,整个数据文件的结构为:
文件名称 + 文件本身
其中文件名称固定占30个byte,存在的情况就是,有的文件名比较长,有的文件名比较短,所有要补足30个字节。

数据构成长度(byte)示例1示例2
30 bytesacb.txtwueoruwousjlasjljgljljgaj.docx
数据N bytesbyte[1980]byte[2049]

二、自己臆想的补足方式

文件名原本有8个字节长,我自己创一个12字节的数组 (new byte[12])补在后面。
还原成string的时候,我用Trim()剔除12字节的空白信息。

var strData = Encoding.UTF8.GetBytes("实验报告.doc");//8 bytes
var blankData = new byte[12];                        //生成一个12bytes的空数组,用来补足20字节
var allData = new List<byte>();
allData.AddRange(strData);                           //合并  
allData.AddRange(blankData);                         //合并var parseStr = Encoding.UTF8.GetString(allData.ToArray());  //还原成string
Debug.Log($"[{parseStr.Length}]");                          //20 
Debug.Log($"[{parseStr.Trim().Length}]");                   //20   
Debug.Log($"[{parseStr.Trim()}]");                          //[实验报告.doc            ]

实践证明【var blankData = new byte[12]】,空白数组blankData 里面装的东西不是空白(space)。

三、正确的方式

  • 1、先把字符串用space扩充到30个字符
  • 2、string转成byte
  • 3、发送
  • 4、接收后转成string
  • 5、用Trim()去掉space
var cmdStr1 = "实验报告.doc";
var cmdPad = cmdStr1.PadRight(30);   //用space扩充到30个字符
var parseStr2 = Encoding.UTF8.GetBytes(cmdPad);
var parseStr3 = Encoding.UTF8.GetString(parseStr2.ToArray());Debug.Log($"[{parseStr3.Length}]");  //30
Debug.Log($"[{parseStr3.Trim()}]");  //[实验报告.doc]
http://www.lryc.cn/news/39502.html

相关文章:

  • macOS虚拟机安装全过程(VMware)
  • 第十三届蓝桥杯A组:选数异或——三种解法(线段树、DP、ST表)
  • 【CTF】CTF竞赛介绍以及刷题网址
  • Springboot怎么优雅实现大文件的上传
  • 2月编程语言排行榜新鲜出炉,谁又摘得桂冠?
  • 机器学习中的数学原理——模型评估与交叉验证
  • JAVA开发(JSP的9大内置对象和4大作用域)
  • (4)EKF失控保护
  • 数论----质数的求解(C/C++)
  • 【电赛MSP430系列】GPIO、LED、按键、时钟、中断、串口、定时器、PWM、ADC
  • 【Linux】进程理解与学习(Ⅱ)
  • vscode 爽到起飞的快捷键
  • vs +qt 打包.cpp和.h为DLL文件
  • echarts有滑块
  • MATLAB绘制ROC曲线
  • ChatGPT前传
  • 我的十年编程路 2020年篇
  • 力扣-SQL【入门】
  • Vue中组件到底是什么
  • 不同时间间隔数据对统计结果的影响
  • hudi系列-数据写入方式及使用场景
  • C # FileStream文件流
  • Go语言中的保留字和运算符详解
  • Linux编译之(1)C语言基础
  • CPU平均负载高问题定位分析
  • Python蓝桥杯训练:基本数据结构 [二叉树] 中
  • 读取 DTC 信息服务 (0x19) – UDS 协议
  • Hive 分区表新增字段 cascade
  • 【Java版oj】day08两种排序方法、最小公倍数
  • FinOps,从概念到落地 | UGeek大咖说第一期直播回顾(上)