- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我将一个文件大小存储在一个二进制文件中,我能够将这个文件大小放入一个 char[8]
缓冲区中。我想将此 char[]
转换为 off_t
类型,以便能够将其作为 truncate(const char *path, off_t长度)
。
我尝试了这种天真的方法,它似乎大部分时间都有效,但有时它会失败,并给我一个奇怪的位序列。
off_t pchar_2_off_t(char* str, size_t size)
{
off_t ret = 0;
size_t i;
for (i = 0; i < size; ++i)
{
ret <<= 8;
ret |= str[i];
}
return ret;
}
最佳答案
ret |= str[i];
是一个问题,因为 str[i]
可能会在转换为 int
时进行符号扩展,设置ret
中的许多位。由 @pmg 暗示并由 @mafso 评论
off_t pchar_2_off_t(const char* str, size_t size) {
off_t ret = 0;
size_t i;
for (i = 0; i < size; ++i) {
ret <<= 8;
ret |= (unsigned char) str[i];
}
return ret;
}
关于c++ - 将 char[] 转换为 off_t,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28383730/
我正在尝试使用 c 发送一个 trim 命令,我想出了基于这个答案的方法:how to TRIM a block on SSD disk? . 编译我正在使用的程序 gcc -D_GNU_SOURCE
只是一个简单的问题:我想编译 PHP 7.1.6 并在执行配置脚本时遇到以下问题: checking size of short... (cached) 2 checking size of int.
我的模块中有以下代码,我用 ICC 编译器编译它。 /** * Static (compile-time) assertion. * Basically, use COND to dimensio
在阅读了大量关于 stackoverflow 的报告后,我决定使用 FILE*(通过 std::fstream)来快速操作我的二进制文件。此外,我需要在处理过程中截断我的文件(_chsize 或 ft
我在最后一行收到“int 格式,不同类型的 arg (arg 4)”错误。我应该只转换为 int 还是有更好的方法来处理这个问题? struct stat info; if (stat(file_pa
假设我正在编写一个函数,它将一个float a[] 和一个偏移量放入该数组中,并返回该偏移量处的元素。使用签名是否合理 float foo(float* a, off_t offset); 为了它?还
我们一直在使用 trick从 autotools 复制以确定 off_t 大小以及我们是否需要定义 _FILE_OFFSET_BITS=64。然而,这个技巧似乎在最近的 gcc (>= 4.6) 中失
我正在使用 TCP 从客户端向服务器发送文件。为了标记文件的结尾,我喜欢在实际数据之前发送文件大小。所以我使用 stat查找文件大小的系统调用。这是类型 off_t .我想知道它占用了多少字节,以便我
在将 Lua 数字转换为 off_t 值时,我应该使用 lua_tointeger() 还是 lua_tonumber()? 我检查了 Lua 本身的源代码,我看到他们的 file:seek函数使用
我正在尝试将一些代码从 Windows 移植到 Linux,但我在支持大文件方面遇到困难。当 gcc 使用 -std=c89 而不是 -std=c99 运行时,off_t 似乎被定义。即使是一个微不足
我是 C 的新手,最近遇到了不匹配的数据类型及其内存分配的问题。我正在编写一个非常简单的程序来计算使用 Linux 系统调用读取的文件的异或校验和。 我的问题是:在将 off_t 或 ssize_t
我目前正在编写系统编程作业,其中一部分我需要获取目录中文件的一些信息。 对于文件的状态,我们有 ctime() 函数将 time_t 类型转换为 string 并返回指向它的指针。 但是 uid_t
我将一个文件大小存储在一个二进制文件中,我能够将这个文件大小放入一个 char[8] 缓冲区中。我想将此 char[] 转换为 off_t 类型,以便能够将其作为 truncate(const cha
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: How should I print types like off_t and size_t? 我正在使用
除了每种类型可以容纳的值的大小之外,size_t 和 off_t 在用法方面的主要区别是什么? size_t 类型用于绝对大小而 off_t 类型用于偏移是否只是约定?还是比这更深入? 我正在编写一个
我正在使用以下版本的 gcc: $ gcc --version gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0 考虑使用 -Werror=sign-conversion
我想使用 MPI 发送/接收 off_t 类型的 vector ,但我一直在读到 off_t 类型在不同平台上可能是不同的东西。我怎样才能做到这一点? 最佳答案 如果您需要最现代的通用操作系统,请使用
我正在尝试打印 off_t 和 size_t 等类型。 printf() 可移植 的正确占位符是什么? 或者是否有一种完全不同的方式来打印这些变量? 最佳答案 打印off_t: printf("%jd
背景:POSIX-defined off_t数据类型是 variable-size depending on the environment 的有符号整数.对于 64 位构建环境,它似乎始终是 64
概要 #include #include int ftruncate(int fd, off_t length); 有人说偏移类型通常是长整数。所以我使用 %ld 来扫描它
我是一名优秀的程序员,十分优秀!