javascript - 将 16 位 RGB 值转换为一个十进制值
问题描述
我设计了一个“ESOLANG”,它使用 16 位颜色和一个精灵编辑器(这篇文章是关于 JS、HTML 的),问题是我尝试使用 r×g×b 转换它,但它只有在值的情况下才有效是32×64×32,我也试过这个
var components = {
r: (c & 0b1111100000000000) >> 16,
g: (c & 0b0000011111100000) >> 8,
b: (c & 0b0000000000011111)
但这让我意识到我不擅长位操作,它应该是一个精灵编辑器,可以从文本中加载和保存,就像每行每列 16 位 RGB 作为单个十进制值一样。我什至没有运气在互联网上搜索我需要的答案。其中大部分是大约 24 位颜色,每个颜色通道使用 8 位,而 16 位 RGB 使用 5 个红色通道,6 个绿色通道,因为人眼对绿色和 5 个蓝色通道敏感。它应该适合大约 2 个字节(0xFFFF),但标准方法是我发布的代码但使用十六进制值,在这种情况下不起作用。任何帮助都将不胜感激。编辑:我试过这个,顺便说一句,当解决方案可能比我实际尝试的更简单时,我对寻求帮助感到有点尴尬
data.value = "";
for(var x=0;x<16;x++){
for(var y=0;y<16;y++){
var components = {
r: (tile[x][y][0] & 1111100000000000) >> 11,
g: (tile[x][y][1] & 0000011111100000) >> 5,
b: (tile[x][y][2] & 0000000000011111)
};
data.value = data.value + (components.r << 11) + (components.g << 5) + (components.b) + " ";
}
data.value = data.value + "\n";
}
}
我使用了 31,63,31(16 位的 WHITE),它应该输出大约 65535,但它输出 009 作为输出。
解决方案
推荐阅读
- linkedin - Linkedin 广告报告返回给定广告系列的空“元素”数组
- excel - Excel 图表:有一种方法可以更改 Y 轴值,将“掩码”文本放在数字位置?
- java - 致命异常尝试在空对象引用上调用虚拟方法“java.lang.String java.lang.Object.toString()”
- r - 为什么即使我没有使用 list()、key<-、names<- 或 attr<-,我也会收到“检测到无效的 .internal.selfref”警告(但没有输出)?
- python - 列出索引超出范围的读取文件
- jsp - 如何使用 html 文件连接服务器?
- java - 一组数字的共同值
- c# - 新的 Xamarin.Forms CollectionView 不允许多预选
- javascript - 如何在 JavaScript 中 getParent().getNode().getProperty("jcr:title")?
- python - 使用 Matplotlib 在 Python 中的某些图旁边显示奇怪的黑色标记?