gpt4 book ai didi

c++ - 将数字编码为字符并写入文件

转载 作者:行者123 更新时间:2023-11-30 04:16:30 25 4
gpt4 key购买 nike

我的 DLL 又遇到了一个小问题:

我尝试将数字(在本例中为“20”)转换为可以写入文件的字符。以何种方式完成并不重要(是否遵循 ascii 表),但我也需要一种转换回来的方法。

这是我的尝试:

file.write((char*)20,3);

但是它抛出一个访问暴力错误..

谁能告诉我这是如何完成的,以及我如何才能逆转这个过程?我还可以使用一种方法来处理大于 255 的数字,因此结果是例如两个或三个字符(两个字符 = 16 位数字。

有人有想法吗?

最佳答案

如果你只想写一个任意字节,你可以这样做:

 file.put(20); 

 char ch = 20;

file.write(&ch, 1); // Note a higher digit than 1 here will mean "undefined behaviour".

要反转该过程,您可以使用 file.get()file.read(&ch, 1)

对于大于单个字节的单位,您必须使用 file.write(...),但它的可移植性较差,因为它现在依赖于值的大小不同平台之间相同,并且内部表示相同。如果您总是在同一类型的机器上运行它(例如,x86 处理器上的 Windows),这不是问题,但如果您开始在不同类型的机器(x86、Sparc、 ARM、IBM 大型机、手机 DSP 等),也可能在不同的操作系统之间。

像这样的东西将适用于上述限制:

int value = 4711;
file.write((char *)&value, sizeof(value));

将此值以文本形式写入文件的可移植性要好得多,任何其他计算机都可以读取该文件,而不是识别相同的字符编码。

关于c++ - 将数字编码为字符并写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17751680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com