我正在将一个字符串写入一个明确使用“↵”字符的文件。但是,在写入文件后,文件会将其读取为开始新行的指示器,我该如何解决这个问题?我正在制作霍夫曼编码器。编码文本的格式是 - 第 1 行 - 预序格式的霍夫曼树,例如 - "00^a1^b10^↵^1c,其中 ^ 表示叶节点。第 2 行 - 包含一个整数,它本质上是要在中删除的填充解码阶段第 3 行是要解码的实际文本。现在我面临的问题是解码阶段,当我使用新行拆分整个文本以获得树、填充和要解码的实际字符串时,我应该分别得到 3 个东西。但是,当用 ('\n') 拆分时,我对树的字符串化表示也会拆分,从而无法进行解析。一个例子 1)要编码的字符串-你好。这是一篇试读文。你好世界!2)每个字符的二进制映射是字符串 "↵": "0000" " ": "100" !: "00010" .: "0100" H: "0110" T: "00110" W: "01010" a: " 11111" d: "01011" e: "1011" h: "00111" i: "1010" l: "110" o: "1110" r: "0010" s: "11110" t: "0111" x: " 00011" 原型:对象3)编码文本-0000^ 10^!1^x10^r10^T1^h100^.10^W1^d10^H1^t100^ 10^i1^e10^l10^o10^s1^a 5 kÛzô¯OÇ*þct½º+,@注意“0000^”之后的换行符,如果它可以是“0000^↵”那么我的问题就解决了
1 回答
青春有我
TA贡献1784条经验 获得超8个赞
恐怕它"\n"的 ASCII 值为 10。
因此你的字符串实际上是这样的:
00^a1^b10^(ASCII_VALUE_10)^1c(ASCII_VALUE_10)(INTEGER)(ASCII_VALUE_10)Text to be encoded
或者更传统地说,如您所见,它通常显示如下:
00^a1^b10^
^1c
(INTEGER)
Text to be encoded
您希望将 ASCII 值 10 用作第一行中的值和行分隔符 ("\n")。这是逻辑上的矛盾,也是英语语言上的矛盾。
但一切都没有丢失。您创建的只是一种用 4 行而不是 3 行编码的数据格式
添加回答
举报
0/150
提交
取消