RGB888 至 RGB565 / 位移位

2023-11-22

我想使用位移位将三个字符组合成一个短片。这是为了实现 RGB565 调色板(其中 5 位用于红色,6 位用于绿色,5 位用于蓝色)。

这是我的示例程序,我只是缺少中间的一步,我认为我需要在哪里做一些操作。

#include <stdio.h>

int main( ){
        unsigned char r, g, b;
        unsigned short rgb;

        r = 255;        // 0xFF 1111 1111
        g = 100;        // 0x64 0110 0100
        b = 50;         // 0x32 0011 0010

        r = r >> 3;     // 0x31 0001 1111
        g = g >> 2;     // 0x19 0001 1001
        b = b >> 3;     // 0x06 0000 0110

        //r = r & something; //
        //g = g & something; //
        //b = b & something; //

        // Desired result:
        //          R      G     B
        // 0xFB26 11111 011001 00110
        rgb = r | g | b;

        printf( "r 0x%x g 0x%x b 0x%x, rgb 0x%08x\n", r, g, b, rgb );
}

最后你可以看到我想要的结果。谢谢您的帮助!


rgb = ((r & 0b11111000) << 8) | ((g & 0b11111100) << 3) | (b >> 3);

我们转变r剩下 11 位,g左移 5 位并按位或将它们与b右移 3 位。 (注意:这假设这些值已经被正确屏蔽,如果需要的话,可以删除任何不需要的位。)

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

RGB888 至 RGB565 / 位移位 的相关文章

  • 无法在 QGLWidget 中设置所需的 OpenGL 版本

    我正在尝试在 Qt 4 8 2 中使用 QGLWidget 我注意到 QGLWidget 创建的默认上下文不显示 OpenGL 3 1 以上的任何输出 Qt wiki 有一个教程 http qt project org wiki How t
  • EF Core 返回 null 关系,直到直接访问

    我有一些如下所示的模型 public class Mutant public long Id get set Relations public long OriginalCodeId get set public virtual Origi
  • 如何使用不同的基本路径托管 Blazor WebAssembly 应用程序

    我有一个 Blazor Webassemble NET 托管应用程序 在我们托管它的服务器上 应用程序的基本路径将是mydomain com coolapp 因此 为了尝试让应用程序在服务器上正确呈现 我一直遵循本页 应用程序基本路径 部分
  • copy_from_user() 错误:目标大小太小

    我正在为内核模块编写 ioctl 处理程序 我想从用户空间复制数据 当我编译禁用优化的代码时 O0 gflags 编译器返回以下错误 include linux thread info h 136 17 error call to bad
  • 非模板函数中的尾随返回类型[重复]

    这个问题在这里已经有答案了 我见过有人使用以下语法来实现函数 auto get next gt int 代替 int get next 我理解两者 并且我知道尾随返回类型语法对于使用 decltype 的模板代码很有用 就我个人而言 我会避
  • 无法在 CUDA 中找到 1 到 100 数字的简单和?

    我正在研究使用 CUDA 的图像处理算法 在我的算法中 我想使用 CUDA 内核找到图像所有像素的总和 所以我在cuda中制作了内核方法 来测量16位灰度图像的所有像素的总和 但我得到了错误的答案 所以我在cuda中编写了一个简单的程序来查
  • 我担心我添加了太多接口

    我正在构建我的领域模型并继续重构它 正如我所做的那样 我发现我喜欢接口 因为它允许我根据接口为具体类型创建可重用的方法 控制器 视图 但是 我发现每次向域实体之一添加新属性时 我都会创建一个接口 例如 我有一个会员状态从抽象继承的对象Ent
  • 如何在 C# 中以编程方式将行添加到 DataGrid?

    正如标题所述 我正在尝试使用 C 以编程方式将行添加到 DataGrid 但我似乎无法使其工作 这是我到目前为止所拥有的 I have a DataGrid declared as dg in the XAML foreach string
  • 如何从 Powerpoint 2010 导出电影?

    如何使用 MS Office PIA 主互操作程序集 或其他方式以编程方式将嵌入视频从 powerpoint 2010 导出到外部文件 在演示文稿中嵌入视频是 Powerpoint 2010 中的一项新功能 我找不到解决方案 PPTX 文件
  • 将这个 if-then 逻辑转换为布尔表达式?

    我在使这段代码更简洁 最好是单个布尔表达式 方面有点绞尽脑汁 这是我的代码 if d Unemployed if type Unemployed tmp Unemployed true else tmp Unemployed false
  • C++网络序列化[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一种将 C 数据包序列化为网络流的解决方案 我在这里看到很多帖子提到人们 ACE 谷歌协议缓
  • 从单应性估计 R/T

    我一直在尝试计算 2 个图像中的特征 然后将这些特征传递回CameraParams R没有运气 特征已成功计算并匹配 但是问题是将它们传递回R t 我明白你必须分解Homography为了使这一点成为可能 我已经使用如下方法完成了 http
  • Clang 5.0 上的 vsprintf 和 vsnprintf [-Wformat-nonliteral] 警告

    我有这段代码 static void err doit int errnoflag int level const char fmt va list ap int errno save unsigned long n char buf MA
  • 在一个解决方案中调用不同项目的方法

    1 个解决方案中有 3 个项目 我对第一个项目中的主文件进行的主要操作 但是我需要调用第三个项目中的方法并使用类 例如 第三个项目有 public DataClasses1DataContext base global WindowsFor
  • 在 Visual Studio 2012 Express 中设置 C++ 调试环境

    我需要调试的应用程序需要设置环境变量 这在 Visual Studio 2012 中似乎非常复杂 我想做类似的事情 set path c foo c bar c windows c program files application set
  • g++ / gcc 是否支持 C++20 新的atomic_flag 功能?

    根据参考参数 https en cppreference com w cpp atomic atomic flag c 20 有丰富的 对我来说有用的 支持atomic flag运营 然而 目前尚不清楚 gcc 是否支持这些功能 它们在任何
  • 使用未命名命名空间而不是静态命名空间

    我可以假设在未命名命名空间中声明的对象相当于static namespace int x 1 static int x 2 FWIK 在这两种情况下 x将具有静态存储期限和内部链接 声明为的对象的所有规则也是如此static适用于未命名名称
  • 在多线程环境中捕获信号

    我有一个大型程序 需要尽可能具有弹性 并且有大量线程 我需要捕获所有信号SIGBUS SIGSEGV 并在必要时重新初始化有问题的线程 或者禁用该线程以继续减少功能 我的第一个想法是做一个setjump 然后设置信号处理程序 可以记录问题
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本
  • 如何使用 Microsoft Graph API 更新 MailboxSettings

    我想从不同的日历更新邮箱设置 如何构建可以通过 Microsoft Graph 更新 MailboxSetting 的请求 这是我的代码示例 但有例外 代码示例 User obj GraphServiceClient Users roomC

随机推荐

  • 当 Eclipse CDT 索引器卡住时我该怎么办?

    我正在使用 Eclipse CDT 2020 06 但我在早期版本中也发生过这种情况 有时 Eclipse CDT 在解析某些文件时会卡住 百分比指标不前进 并按任务的取消按钮使其 取消请求 但它仍然卡在这种状态 因此 我不仅不能在我的项目
  • 确定源代码行和函数引用文件 - Firebug 如何做到这一点?

    简单的介绍 我试图获取函数定义的行号 以仅解析公共内容的文档注释 我已经到了可以找到函数名称的地步 如果我愿意的话 我可以执行该函数 但我似乎无法找到任何方法来提取行号信息 注意 这纯粹是出于文档目的 因此不需要跨浏览器 我知道 fireb
  • MS SQL 2012:在 SQL 中,如果列包含 0,则将列移至左侧

    如果第一列 左侧列 具有 0 值并且应在右侧列中添加 NULL 我需要将数据 列 移至左侧 一旦在任何列中发现非零值 则后面列中的 0 值应保持原样 输入数据 cust id month1 month2 month3 month4 mont
  • 如何使用 Jackson 将地图序列化为列表

    如何将 Map 属性序列化为 Map 值的列表 我已经能够使用进行其他简单的转换 JsonSerialize using getter 上的注释 然而 我不确定是否存在适合我想做的事情的人 我们需要类似的东西 在我们的例子中我们使用了定制的
  • MongoDB:按现有字段排序,然后按字母顺序排序

    在我的数据库中 我有一个字段name 在某些记录中 它是一个空字符串 而在其他记录中 它包含一个名称 在我的查询中 我目前正在做 db users find sort name 1 但是 这首先返回名称字段为空的结果 然后按字母顺序返回结果
  • 在哪里可以找到将正则表达式应用于输出的 Java Servlet 过滤器? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我希望有人已经写过这个 一
  • 在 VS 2010 中禁用 VB.NET 10 功能

    有没有办法在 VS 2010 中禁用 Visual Basic 10 语言功能 我们的开发团队已转移到 Visual Studio 2010 但我们仍然必须保持与 Visual Studio 2008 的向后兼容性 有没有办法禁用新的语言功
  • ActiveRecord::AssociationTypeMismatch:用户预期,得到 Fixnum

    我不明白为什么会出现以下错误 ActiveRecord AssociationTypeMismatch User 29943560 expected got Fixnum 当我在 Rails 控制台中执行此操作时 game Game cre
  • UTF-8 特殊字符不显示

    我试图找出为什么像这样的字符 显示像空盒子 它们是 unicode 字符 字符集是 utf 8 这可能是一个没有字形的字体问题吗 有任何想法吗 详细信息 Html页面 我使用firefox 16 0 1 Windows 7 像这篇文章中的页
  • 如何在Visual Studio中编译C++文件?

    我是 Visual Studio 新手 不知道如何编译 cpp 文件 我只制作了一个 cpp 文件 ctr n gt Visual C gt C 文件 并尝试编译它 但是在通常有编译按钮的地方 比如 c 有一个奇怪的 附加 按钮 我不明白发
  • Angular-app、(ui-)router 中解析器的身份验证和顺序

    这个问题指的是角度应用程序项目及其对用户进行身份验证的方式 原始实现通过在路由器上使用解析子句来保护对某些 url 的访问 这看起来像 routeProvider when projects templateUrl projects pro
  • VBA:将文本转换为数字

    我有一列数字 无论出于何种原因 它们都被格式化为文本 这使我无法使用算术函数 例如小计函数 将这些 文本数字 转换为真实数字的最佳方法是什么 Here is a screenshot of the specific issue 我已经尝试过
  • 从加载Picasso的ImageView获取Bitmap

    我有一个加载图像的方法 如果图像之前尚未加载 它将在服务器上查找它 然后它将其存储在应用程序文件系统中 如果它位于文件系统中 则会加载该图像 因为这比从服务器提取图像要快得多 如果您之前加载过图像而没有关闭应用程序 它将存储在静态字典中 以
  • VC++ 中 invalidate、update 方法的作用是什么

    我对 C 中的窗口函数有一点疑问 到底是什么 invalidate 功能做什么 当我们需要调用它时 它会发送什么消息 还有什么是 update 功能 是 invalidaterect 作品类似于 invalidate 功能 Thanks C
  • 如何获取某个目录的父文件夹的路径?

    当我有这个目录路径时 C Program Files x86 Embarcadero 我正在寻找的函数应该返回 C Program Files x86 我已经尝试过这段代码 但它仅适用于文件 不适用于目录 function GetParen
  • 使用 Beautiful Soup 从“img”标签中提取“src”属性

    考虑 div class someClass a href href img alt some src some a div 我想提取来源 即src 来自图像的属性 即img 使用 Beautiful Soup 标签 我使用 Beautif
  • 如何使用 Python csv reader 循环遍历特定范围的行?

    如何使用 Python csv reader 循环遍历特定范围的行 以下代码循环遍历所有行 with open trainFile rt as csvfile spamreader csv reader csvfile delimiter
  • 使用 openpyxl 或 xl* 或 xlsxwriter 在工作簿中移动工作表?

    我已经阅读了文档 openpyxl xlwt xlrd xlutils XLSX作家 我找不到移动工作表的方法Excel工作簿 测试在末尾添加了一个工作表 具体来说 我有一个日历之类的 JAN FEB DEC 当需要时我需要更换几个月 如果
  • 限制非管理员用户的路由访问

    Goal 我正在尝试为我的登录用户创建管理路由限制 我尝试检查我的用户是否是log in 并且如果用户类型是Admin 如果是 我想允许他们访问管理路由 否则 响应 404 路线 php router gt group middleware
  • RGB888 至 RGB565 / 位移位

    我想使用位移位将三个字符组合成一个短片 这是为了实现 RGB565 调色板 其中 5 位用于红色 6 位用于绿色 5 位用于蓝色 这是我的示例程序 我只是缺少中间的一步 我认为我需要在哪里做一些操作 include