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 / 位移位 的相关文章

  • InvalidOperationException - 对象当前正在其他地方使用 - 红十字

    我有一个 C 桌面应用程序 其中我连续创建的一个线程从源 实际上是一台数码相机 获取图像并将其放在 GUI 中的面板 panel Image img 上 这必须是另一个线程 如它是控件的代码隐藏 该应用程序可以工作 但在某些机器上 我会在随
  • 每个托管线程是否都有自己对应的本机线程?

    我想知道是否在 Net 中创建托管线程 通过调用Thread Start 导致在后台创建一个本机线程 那么托管线程是否有对应的本机线程呢 如果是 当托管线程等待或睡眠时 是否意味着相应的本机线程也在等待或睡眠 是的 NET 线程映射到所有当
  • 为什么 int8_t 和用户通过 cin 输入显示奇怪的结果[重复]

    这个问题在这里已经有答案了 一小段代码让我发疯 但希望你能阻止我跳出窗外 看这里 include
  • 确保 StreamReader 不会挂起等待数据

    下面的代码读取从 tcp 客户端流读取的所有内容 并且在下一次迭代中它将仅位于 Read 上 我假设正在等待数据 我如何确保它不会在没有任何内容可供读取时返回 我是否必须设置低超时 并在失败时响应异常 或者有更好的办法吗 TcpClient
  • 复制 std::function 的成本有多高?

    While std function是可移动的 但在某些情况下不可能或不方便 复制它会受到重大处罚吗 它是否可能取决于捕获变量的大小 如果它是使用 lambda 表达式创建的 它依赖于实现吗 std function通常被实现为值语义 小缓
  • 在 C 中匹配二进制模式

    我目前正在开发一个 C 程序 需要解析一些定制的数据结构 幸运的是我知道它们是如何构造的 但是我不确定如何在 C 中实现我的解析器 每个结构的长度都是 32 位 并且每个结构都可以通过其二进制签名来识别 举个例子 有两个我感兴趣的特定结构
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 回发后刷新时提示确认表单重新提交。我做错了什么?

    我有一个以空白 默认状态启动的仪表板 我让用户能够将保存的状态加载到仪表板中 当他们单击 应用 按钮时 我运行以下代码 function CloseAndSave var radUpload find radUpload1ID var in
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • Azure 辅助角色“请求输入之一超出范围”的内部异常。

    我在辅助角色中调用 CloudTableClient CreateTableIfNotExist 方法 但收到一个异常 其中包含 请求输入之一超出范围 的内部异常 我做了一些研究 发现这是由于将表命名为非法表名引起的 但是 我尝试为我的表命
  • C# HashSet 只读解决方法

    这是示例代码 static class Store private static List
  • C++ 函数重载类似转换

    我收到一个错误 指出两个重载具有相似的转换 我尝试了太多的事情 但没有任何帮助 这是那段代码 CString GetInput int numberOfInput BOOL clearBuffer FALSE UINT timeout IN
  • 不同类型指针之间的减法[重复]

    这个问题在这里已经有答案了 我试图找到两个变量之间的内存距离 具体来说 我需要找到 char 数组和 int 之间的距离 char data 5 int a 0 printf p n p n data 5 a long int distan
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 无法接收 UDP Windows RT

    我正在为 Windows 8 RT 编写一个 Windows Store Metro Modern RT 应用程序 需要在端口 49030 上接收 UDP 数据包 但我似乎无法接收任何数据包 我已按照使用教程进行操作DatagramSock
  • WebSocket安全连接自签名证书

    目标是一个与用户电脑上安装的 C 应用程序交换信息的 Web 应用程序 客户端应用程序是 websocket 服务器 浏览器是 websocket 客户端 最后 用户浏览器中的 websocket 客户端通过 Angular 持久创建 并且
  • 我的班级应该订阅自己的公共活动吗?

    我正在使用 C 3 0 遵循标准事件模式我有 public event EventHandler
  • 当从finally中抛出异常时,Catch块不会被评估

    出现这个问题的原因是之前在 NET 4 0 中运行的代码在 NET 4 5 中因未处理的异常而失败 部分原因是 try finallys 如果您想了解详细信息 请阅读更多内容微软连接 https connect microsoft com

随机推荐

  • 当 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