如何解决读取 OpenCV FOURCC 代码 int 到 char 的转换
fourcc = (int)cap.get(cv::CAP_PROP_FOURCC);
string fourcc_str = fmt::format("%c%c%c%c",fourcc & 255,(fourcc >> 8) & 255,(fourcc >> 16) & 255,(fourcc >> 24) & 255);
std::cout << "CAP_PROP_FOURCC: " << fourcc_str << std::endl;
此代码输出 %c%c%c%c 并且它应该输出 HDYC。如果我将代码修改为
fourcc = (int)cap.get(cv::CAP_PROP_FOURCC);
string fourcc_str = fmt::format("{:x}{:x}{:x}{:x}",(fourcc >> 24) & 255);
std::cout << "CAP_PROP_FOURCC: " << fourcc_str << std::endl;
我得到的输出:
CAP_PROP_FOURCC: 48445943
我尝试将 fmt 类型更改为 :x,但出现异常。
fourcc = (int)cap.get(cv::CAP_PROP_FOURCC);
string fourcc_str = fmt::format("{:c}{:c}{:c}{:c}",(fourcc >> 24) & 255);
std::cout << "CAP_PROP_FOURCC: " << fourcc_str << std::endl;
fourcc = (int)cap.get(cv::CAP_PROP_FOURCC);
char c1 = fourcc & 255;
char c2 = (fourcc >> 8) & 255;
char c3 = (fourcc >> 16) & 255;
char c4 = (fourcc >> 24) & 255;
std::cout << "CAP_PROP_FOURCC: " << c1 << c2 << c3 << c4 << std::endl;
CAP_PROP_FOURCC: HDYC
如何使用具有正确语法的 fmt 来获取 FOUCC HDYC?
解决方法
c
说明符适用于 int
和 {fmt} 7+ (godbolt):
#include <fmt/core.h>
int main() {
int fourcc = ('C' << 24) | ('Y' << 16) | ('D' << 8) | 'H';
std::string fourcc_str = fmt::format(
"{:c}{:c}{:c}{:c}",fourcc & 255,(fourcc >> 8) & 255,(fourcc >> 16) & 255,(fourcc >> 24) & 255);
fmt::print(fourcc_str);
}
输出:
HDYC
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。