gpt4 book ai didi

c++ - 将 char[] 转换为 off_t

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:19:36 26 4
gpt4 key购买 nike

我将一个文件大小存储在一个二进制文件中,我能够将这个文件大小放入一个 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/

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