gpt4 book ai didi

powershell - 将 FromArgb 用于 Int32[] 值会导致交换的红色和蓝色值

转载 作者:行者123 更新时间:2023-12-03 23:38:45 25 4
gpt4 key购买 nike

我有这个 Int32[]值(value) 14508153应该是:

R             : 121
G : 96
B : 221
enter image description here

如果我使用:
[System.Drawing.Color]::FromArgb(14508153)
它返回:

R : 221
G : 96
B : 121
A : 0
IsKnownColor : False
IsEmpty : False
IsNamedColor : False
IsSystemColor : False
Name : dd6079
问题
  • 这些值如何或为什么交换为 RB使用那个功能?
  • 是否有内置的 PowerShell 方法可以正确转换它们?
  • 最佳答案

    我无法解释为什么需要重新排列字节(有关想法,请参阅底部部分),但您可以这样做:

    Add-Type -AssemblyName System.Drawing

    $bytes = [System.BitConverter]::GetBytes(14508153)

    [byte[]] $rearrangedBytes = $bytes[2], $bytes[1], $bytes[0], $bytes[3]

    [System.Drawing.Color]::FromArgb(
    [System.BitConverter]::ToInt32($rearrangedBytes, 0)
    )
    System.BitConverter.GetBytes() , System.BitConverter.ToInt32() .
    以上产生:
    R             : 121
    G : 96
    B : 221
    A : 0
    IsKnownColor : False
    IsEmpty : False
    IsNamedColor : False
    IsSystemColor : False
    Name : 7960dd

    您的 [int] 中似乎只有 3 个字节( System.Int32 ) 值是相关的,并且它们是 Big-Endian 顺序(参见维基百科关于 endianness 的文章)。
    相比之下, System.Drawing.Color.FromArgb() 预计所有 4 个字节都是相关的,按小端顺序。

    关于powershell - 将 FromArgb 用于 Int32[] 值会导致交换的红色和蓝色值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67350864/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com