字符串填充到指定长度 您所在的位置:网站首页 python空白字符 字符串填充到指定长度

字符串填充到指定长度

2023-03-17 10:53| 来源: 网络整理| 查看: 265

一、需求

在传输一个文件的时候,传输的是二进制数据,整个数据文件的结构为: 文件名称 + 文件本身 其中文件名称固定占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(); 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转成byte3、发送4、接收后转成string5、用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]


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有