Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.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
Python中十六进制颜色的字符串格式_Python_String_Hex - Fatal编程技术网

Python中十六进制颜色的字符串格式

Python中十六进制颜色的字符串格式,python,string,hex,Python,String,Hex,我修改了PHP中的一个函数以返回颜色渐变(http://www.herethere.net/~samson/php/color\u gradient/color\u gradient\u generator.php.txt)。返回以0结尾的颜色十六进制代码时出现问题。这就是功能: def _get_color(current_step=0, start='000000', end='ffffff', max_steps=16): ''' Returns the color

我修改了PHP中的一个函数以返回颜色渐变(http://www.herethere.net/~samson/php/color\u gradient/color\u gradient\u generator.php.txt)。返回以0结尾的颜色十六进制代码时出现问题。这就是功能:

def _get_color(current_step=0, start='000000', end='ffffff', max_steps=16):
    '''
        Returns the color code for current_step between start and end
    '''
    start = '{0:#x}'.format(int(start, 16))
    end = '{0:#x}'.format(int(end, 16))

    if int(max_steps) > 0 & int(max_steps) < 256:
        max_steps = max_steps
    else:
       max_steps = 16

    r0 = (int(start, 16) & 0xff0000) >> 16
    g0 = (int(start, 16) & 0x00ff00) >> 8
    b0 = (int(start, 16) & 0x0000ff) >> 0

    r1 = (int(end, 16) & 0xff0000) >> 16
    g1 = (int(end, 16) & 0x00ff00) >> 8
    b1 = (int(end, 16) & 0x0000ff) >> 0

    if r0 < r1:
        r = int(((r1-r0)*(float(current_step)/float(max_steps)))+r0)
    else:
        r = int(((r0-r1)*(1-(float(current_step)/float(max_steps))))+r1)

    if g0 < g1:
        g = int(((g1-g0)*(float(current_step)/float(max_steps)))+g0)
    else:
        g = int(((g0-g1)*(1-(float(current_step)/float(max_steps))))+g1)

    if b0 < b1:
        b = int(((b1-b0)*(float(current_step)/float(max_steps)))+b0)
    else:
        b = int(((b0-b1)*(1-(float(current_step)/float(max_steps))))+b1)

    return '{0:#x}'.format(((((r << 8) | g) << 8) | b))
注意前两个十六进制代码。关于如何正确格式化返回值以返回000000,您有什么想法吗

>>> print '{0:06x}'.format(123)
00007b
>>> print '{0:06x}'.format(123)
00007b