用 C 将位写入文件

2024-04-30

我有这个字符串:“101” 我想用 C 语言将其写入文件,而不是文本:“101”等 8 位 x 字符。但直接使用字符串作为位:位“1”,位“0”和位“1”,这样文件将是3位。

有可能吗? 我在网上搜索并尝试这样做:

char c[25] = "101";
FILE *binFile = fopen("binFile.bin", "wb");
int x = atoi(c);
fwrite(&x, sizeof(x), 1, binFile);

但最后,当我验证文件的字节数时,Windows 告诉我这是 4 字节文件!而且不是3位!

如果可能的话,我该如何做到这一点?多谢。


所有文件系统都以字节为单位处理文件(并以更大的粒度分配存储空间,最少一次 512 字节)。您不可能获得这样的文件3 bits long.

您能做的最好的事情就是用完一整个字节,但忽略其中的 5 位。为此(假设数字始终适合一个字节),请将输入字符串转换为整数类型:

long l = strtol(c, 0, 2);

然后获取其最低有效字节:

unsigned char b = l & 0xffl;

并将其写入文件:

fwrite(&b, 1, 1, binFile);

1 嗯,也许不是全部。某些地方可能有一些研究人员正在尝试位大小的文件系统。我不知道。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用 C 将位写入文件 的相关文章

随机推荐

  • 如何更改每种语言的 vim 设置?

    我将 vim 与许多不同的语言 C C Java shell 等 一起使用 我知道 vim 已经为每种语言预设了设置 但我想根据我个人的喜好更改每种语言的设置 我已经有一个带有设置的 vimrc 文件 但我想要更多文件来根据我使用的语言声明
  • Dropzone 的“勾号”标记没有显示?

    I have been using dropzone to upload the image file on my localhost Everything is working fine file is being uploaded an
  • 当新版本的 pod 可用时,“pod update”会覆盖我的代码更改吗?

    我已使用 cocoapods 将 MKStoreKit 版本 4 99 添加到我的项目中 我的 Podfile 包含 platform ios 6 0 pod MKStoreKit gt 4 99 MKStoreKit 有一个名为 MKSt
  • 当我运行 C# 参数化查询时,它超时。具有硬编码参数的相同查询工作正常

    我想获取文本列包含字符串过滤器的所有 ID 当我运行此参数化查询时 它超时 SqlCommand cmd new SqlCommand SELECT ID FROM TableName WHERE Text LIKE filter conn
  • 下面的代码是如何工作的?

    众所周知 cout 在 VS2010 中是无缓冲的 参见 Stephan Lavavej 的帖子 here http connect microsoft com VisualStudio feedback details 642876 st
  • 是否可以将 RSA Archer 与多个 Active Directory 集成?

    是否可以将 RSA Archer 与多个 Active Directory 集成 一切皆有可能 只是你愿意付出多少努力 Option 1 推荐 RSA Archer v5 x 支持多种 LDAP 同步配置 因此 您可以拥有多个 AD 服务器
  • 使用 python 登录 Instagram 时出错

    我正在尝试使用 argparse 通过 python 脚本登录我的 Instagram 似乎已连接 但打印出 无法加载该页面 如果您的浏览器禁用了 cookie 或者您正在以私人模式浏览 请尝试启用 cookie 或关闭私人模式 然后重试您
  • 有没有办法让特定的 div 忽略它的父 div 的位置?

    我有一个 div 其位置因其包含的 div 的相对定位而偏离 虽然删除父级的相对定位可以解决问题 但我们宁愿不将其作为解决方案来实现 因为它可能会破坏其他内容 有没有办法强迫孩子忽略父母的定位 不幸的是 没有办法让一个元素通过 CSS 动态
  • 合并来自 ffmpeg 的两个视频

    我想使用 ffmpeg 将两个 mp4 视频组合成一个 mp4 视频 到目前为止我尝试过的是 ffmpeg i input1 mp4 i input2 mp4 output mp4 但是 每次我获取带有第一个输入的视频编解码器的视频而不是另
  • iPhone X - 设置主页指示器周围区域的颜色

    当我尝试将工作表与 iPhone X 的安全区域对齐时 我对 Xcode 还很陌生 它在工作表下方留下了一个透明区域 有没有办法设置该区域的填充而不扩展纸张或在安全区域之外对齐 这是我的小扩展 如果有人可以建议改进以不通过 幻数 标签访问添
  • 如何找到与一个变量中的最大值相对应的所有变量的最大值?

    我有一个包含许多变量的每日数据 xarray 我想提取最大q routed每年及最大当日其他变量的对应值q routed发生
  • 什么是 NullPointerException,如何修复它?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 什么是空指针异常 java lang NullPointerException 以及是什
  • 了解 C++0x lambda 捕获

    在最近的一份 C 0x 草案 n3225 pdf 中 我们可以找到 5 1 2 10 使用非限定名称查找的常用规则来查找捕获列表中的标识符 3 4 1 每个此类查找都应找到在本地 lambda 表达式的到达范围中声明的具有自动存储持续时间的
  • 如何查询 USB Root Hub 中未列出的 USB 设备

    查询适用于在以下位置找到的某些设备Win32 USBHub SELECT FROM Win32 USBHub WHERE DeviceID 0 这是代码上下文 Check if USB device is plugged in string
  • 如何在 Mongoose 中使用正则表达式查找项目[重复]

    这个问题在这里已经有答案了 在 Mongoose 文档中我没有找到等效的 regex https docs mongodb com manual reference operator query regex MongoDb 的 你能提供一个
  • 使用 KDE Kirigami 时未找到 QML 模块

    所以我决定在我的应用程序中使用 KDE Kirigami UI 框架 所以我按照说明进行操作here https api kde org frameworks kirigami html index html 我将存储库克隆到我的应用程序目
  • 另一个 MinGW“gcc:错误:CreateProcess:没有这样的文件或目录”

    我已经通过 GUI 安装程序在 Windows 8 64 位 中安装了 MinGW C 编译器 但是当我尝试编译 C 程序时 gcc 说 gcc CreateProcess 没有这样的文件或目录 这是一个常见的错误 我已经尝试了我找到的所有
  • 查找数组中的 K 个最小值(堆 vs QuickSelect)

    假设我们有一个数组 我们希望找到它的 K 个最小值 有两种方法 1 使用快速选择算法 O n 时间复杂度和O 1 空间 2 使用最小堆数据结构 O NlogK 时间复杂度和O K 空间 我想知道什么时候一个比另一个更受青睐 我想这两个都可以
  • 如何实现有效的 Java 特征?

    请告诉我这是否不合适 特别是 Programmers SE 或其他东西是否更适合这个问题 好吧 因此 我目前将许多 特征 表达为接口 我们称它们为 可更新 和 可破坏 将它们表达为接口的缺点是我无法在所有 可破坏 组件之间共享行为 另一方面
  • 用 C 将位写入文件

    我有这个字符串 101 我想用 C 语言将其写入文件 而不是文本 101 等 8 位 x 字符 但直接使用字符串作为位 位 1 位 0 和位 1 这样文件将是3位 有可能吗 我在网上搜索并尝试这样做 char c 25 101 FILE b