我有一个函数,它接受 24 位到 12 位十六进制并在 LCD 上打印颜色值。
如果用户输入 RGB 值,如何将 RGB 转换为单个 24 位十六进制字符串?
我在网上找了很多Java和C++的算法,但是好像没法兼容Arduino。
最佳答案
我最后看了看,Arduino 没有打印其他格式的好方法,比如 printf()。所以你必须自己转换为十六进制,或者找到一个现有的函数,通过将实数转换为十六进制字符表示来完成它。这是一种方法:
我假设“24 位”是 RGB 值,按照惯例,它是 0-255 的 3 个 8 位数字。在这种情况下,每个十进制数都有两位十六进制数。让我们用 R = 243 来说明。
第一个十六进制“数字”将是 h1 = int(R/16)
,即 15。
另一个是 h2 = R - h1*16
,即 3。
但是那些“数字”仍然是十进制数。例如,在数组中有一个查找表,其中数组的索引是十进制数,值是十六进制字符。
例如,您将有 lookup[15] = 'F'
和 lookup[3] = '3'
。
只需打印出所有这些没有空格的数字即可。
关于hex - Arduino 草图中的 RGB 到十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8319980/