Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将虚线四元ipv4 ip地址转换为唯一的十六进制值/网络颜色?_Javascript_Jquery_Hex_Ipv4 - Fatal编程技术网

Javascript 如何将虚线四元ipv4 ip地址转换为唯一的十六进制值/网络颜色?

Javascript 如何将虚线四元ipv4 ip地址转换为唯一的十六进制值/网络颜色?,javascript,jquery,hex,ipv4,Javascript,Jquery,Hex,Ipv4,我知道在二进制中,ipv4地址是32位,web颜色是24位。我也知道,正因为如此,并不是每个ip地址都有唯一的颜色 我可以通过删除第一个带点的四元组,留下一个带点的三元组,然后将它们用于R,G,B来拼凑出一个解决方案 我更喜欢的是,而且我现在似乎无法理解的是,如何将32位值“降级”为24位,然后从中获取十六进制值 将ipv4地址的十进制表示除以256,然后将其转换为十六进制,这有意义吗 我真的希望这是有意义的,我没有滥用太多的术语 任何编程语言都可以,但javascript解决方案的好处是。也许

我知道在二进制中,ipv4地址是32位,web颜色是24位。我也知道,正因为如此,并不是每个ip地址都有唯一的颜色

我可以通过删除第一个带点的四元组,留下一个带点的三元组,然后将它们用于R,G,B来拼凑出一个解决方案

我更喜欢的是,而且我现在似乎无法理解的是,如何将32位值“降级”为24位,然后从中获取十六进制值

将ipv4地址的十进制表示除以256,然后将其转换为十六进制,这有意义吗

我真的希望这是有意义的,我没有滥用太多的术语


任何编程语言都可以,但javascript解决方案的好处是。

也许你应该占一定比例。从0到2^32的IP地址有多大,您应该将未知X放在0到2^24的相同比例中

所以,基本上如果你的地址是A,颜色是C,那么比例应该是:

A/2^32==C/2^24


这只是一个基本的想法。您是想从整个IP地址中生成颜色,还是可能单独获取每个八位元?你到底想达到什么目的?

也许你应该占一个比例。从0到2^32的IP地址有多大,您应该将未知X放在0到2^24的相同比例中

所以,基本上如果你的地址是A,颜色是C,那么比例应该是:

A/2^32==C/2^24


这只是一个基本的想法。您是想从整个IP地址中生成颜色,还是可能单独获取每个八位元?您想要精确地实现什么?

据我所知,RGB中的最高值是每种颜色的FF,对应于255

IPv4在每个符号中的最大值为255

放弃第一个符号是明智的,因为有些符号可能是保留的

因此,255.255.255.255的颜色应为RGB 255、255、255


你可能有255减去颜色返回的保留值。

据我所知,RGB中的最大值是每种颜色的FF,对应于255

IPv4在每个符号中的最大值为255

放弃第一个符号是明智的,因为有些符号可能是保留的

因此,255.255.255.255的颜色应为RGB 255、255、255


您可能有255减去颜色返回的保留值。

IP地址有32位,RGB值只有24位。这意味着您必须丢弃一些数据。将IP地址中的最高有效位映射到颜色空间中的最高有效位时,映射这些位是有意义的

IP地址以分层方式组织。大型相邻区块被分配给国家的注册商,然后这些注册商将这些区块分割并分配给ISP,ISP再将这些区块分割并分配给公司或客户群,通常基于地理上的接近程度。这意味着第一个字节的有效性最高,最后一个字节的有效性最低

另一方面,在RGB值中,每个颜色通道在技术上具有同等的重要性。从技术上讲人眼对绿色最敏感,对蓝色最不敏感,因此绿色比红色更重要,红色比蓝色更重要。在每个颜色通道中,位的重要性降低

这意味着我将以以下方式将IP地址的32位映射到RGB:

12345678 90123456 78901234 56789012
GRBGRBGR BGRBGRBG RBGRBGRB --------

这意味着来自不同网络的地址的颜色将非常不同,来自同一子网的地址的颜色将相似。网络拓扑中两个地址之间的距离越小,其色差越小。来自相同/24子网的地址将具有完全相同的颜色。但是,当两个IP来自同一个/24子网时,它们很可能属于同一组织的两台机器,或者来自ISP地址池,该地址池动态分配给居住在一个相当小的地理区域内的客户端,因此与同一个人打交道的机会非常高。

IP地址有32位,RGB值只有24位。这意味着您必须丢弃一些数据。将IP地址中的最高有效位映射到颜色空间中的最高有效位时,映射这些位是有意义的

IP地址以分层方式组织。大型相邻区块被分配给国家的注册商,然后这些注册商将这些区块分割并分配给ISP,ISP再将这些区块分割并分配给公司或客户群,通常基于地理上的接近程度。这意味着第一个字节的有效性最高,最后一个字节的有效性最低

另一方面,在RGB值中,每个颜色通道在技术上具有同等的重要性。从技术上讲人类 眼睛对绿色的感知能力最强,对蓝色的感知能力最低,因此绿色比红色更显著,红色比蓝色更显著。在每个颜色通道中,位的重要性降低

这意味着我将以以下方式将IP地址的32位映射到RGB:

12345678 90123456 78901234 56789012
GRBGRBGR BGRBGRBG RBGRBGRB --------

这意味着来自不同网络的地址的颜色将非常不同,来自同一子网的地址的颜色将相似。网络拓扑中两个地址之间的距离越小,其色差越小。来自相同/24子网的地址将具有完全相同的颜色。但是,当两个IP来自同一/24子网时,它们很可能属于同一组织的两台机器,或者来自ISP地址池,该地址池动态分配给居住在一个相当小的地理区域内的客户端,因此,与同一个人打交道的可能性非常高。

实用的解决方案:只需从IP地址创建一个快速计算但难以预测的散列,如MD5*,并仅使用结果的前24位

这将丢弃输入的一些熵,但对于丢弃的位,几乎没有偏差。会有冲突,但不会有地址冲突的可识别模式


*是的,MD5作为一个加密散列函数已经过时了,但在这种情况下这一点都不重要。它相对容易实现,执行速度快,结果混乱不堪,这就是本例所需的全部内容。

实用解决方案:只需从IP地址创建一个快速计算但难以预测的散列,如MD5*,并仅使用结果的前24位

这将丢弃输入的一些熵,但对于丢弃的位,几乎没有偏差。会有冲突,但不会有地址冲突的可识别模式


*是的,MD5作为一个加密散列函数已经过时了,但在这种情况下这一点都不重要。它相对容易实现,执行速度快,结果混乱不堪,这就是本例所需的全部内容。

一种可能性是首先将IP地址转换为CMYK颜色,每个颜色范围为0-255。然后,将CMYK颜色转换为RGB

或者


也许从IP地址取前三个字节,并将其用于RGB,将最后一个字节用于0-1范围内规范化的alpha通道。

一种可能性是首先将IP地址转换为CMYK颜色,每个都用于0-255范围。然后,将CMYK颜色转换为RGB

或者


也许从IP地址取前三个字节,并将其用于RGB,将最后一个字节用于0-1范围内规范化的alpha通道。

目的是什么?这个反问题不仅仅是好奇-你需要丢弃25%的信息,哪些信息可以丢弃,哪些不可以丢弃取决于这样做的确切原因我也不认为你对整个ipv4频谱感兴趣,它们中有很多是保留的。除非你显示的IP地址非常广泛,您可能只是在测试人眼的颜色分辨率。192.0.122.1和193.1.125.2之间的差异并不明显。如果您的目标IP号码非常接近,您可能希望通过哈希函数将这些号码放在一起。@Philipp目的是更改大型html表中包含IP地址的表行的背景色。这样,具有匹配ip地址的行具有相同的颜色。我明白你为什么要问,也许我目前丢弃第一个八位组的方法实际上是最好的。。下面是一个指针,用于将32位转换为24位:目的是什么?这个反问题不仅仅是好奇-你需要丢弃25%的信息,哪些信息可以丢弃,哪些不可以丢弃取决于这样做的确切原因我也不认为你对整个ipv4频谱感兴趣,它们中有很多是保留的。除非你显示的IP地址非常广泛,您可能只是在测试人眼的颜色分辨率。192.0.122.1和193.1.125.2之间的差异并不明显。如果您的目标IP号码非常接近,您可能希望通过哈希函数将这些号码放在一起。@Philipp目的是更改大型html表中包含IP地址的表行的背景色。这样,具有匹配ip地址的行具有相同的颜色。我明白你为什么要问,也许我目前丢弃第一个八位组的方法实际上是最好的。。这是一个将32位转换为24位的指针:我认为您的做法是正确的。我的目标只是更改一个大html表中表行的背景颜色,以便您可以快速查看哪些表行包含匹配的IP。我知道我正在丢失信息,比如你所建议的方法,比如:1.2.3.4和1.2.3.5可能是相同的Web颜色?@凯文:是的,但是考虑到1.2.3.4和1.2.3.5之间的差异小于
这与2.2.3.4是一个完全不同的领域——你无论如何都必须放弃一个领域。我认为你在这方面走得对。我的目标只是更改一个大html表中表行的背景颜色,以便您可以快速查看哪些表行包含匹配的IP。我知道我正在丢失信息,用你建议的方法,例如:1.2.3.4和1.2.3.5可能是相同的Web颜色?@凯文:是的,但是考虑到1.2.3.4和1.2.3.5之间的差异小于2.2.3.4一个完全不同的域的差异。无论如何,您将不得不放弃一个段。谢谢您的详细回答。你帮助我理解了我应该放弃哪些信息的决定。我在发布这篇文章时的想法是进行某种降级,但现在我想我可能应该放弃一个完整的八位组。原则上,我同意您的看法,ipv4地址的最后一个八位字节是最不重要/最随意的。有趣的是,在我的情况下,放弃第一个八位字节可能更好,因为我正在处理的数据中的许多IP可能位于同一个数据中心/网络中感谢您提供的详细答案。你帮助我理解了我应该放弃哪些信息的决定。我在发布这篇文章时的想法是进行某种降级,但现在我想我可能应该放弃一个完整的八位组。我原则上同意您的观点,ipv4地址的最后一个八位字节是最不重要/最随意的。有趣的是,在我的情况下,丢弃第一个八位字节可能更好,因为我正在处理的数据中的许多IP可能位于同一数据中心/网络中!我喜欢它。让我试试。我真的很喜欢这个想法,考虑到我正在努力实现的目标。谢谢我现在想知道如何通过Javascript、md5或其他方式创建某种散列。如果我想不出来,也许我应该再提交一个问题。标记为已解决。我现在只需要在js中找到一个好的、简单的哈希算法。我应该在这个问题上提供更多的信息,但是谢谢你的“字里行间的阅读”并找出我真正需要的。聪明!我喜欢它。让我试试。我真的很喜欢这个想法,考虑到我正在努力实现的目标。谢谢我现在想知道如何通过Javascript、md5或其他方式创建某种散列。如果我想不出来,也许我应该再提交一个问题。标记为已解决。我现在只需要在js中找到一个好的、简单的哈希算法。我应该在这个问题上提供更多的信息,但是谢谢你的“字里行间的阅读”和找出我真正需要的东西。