日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

pythonrgb高精度浮点运算类型_python实现RGB字符串,按24位对齐后输出对应Integer行数字...

發布時間:2024/9/27 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pythonrgb高精度浮点运算类型_python实现RGB字符串,按24位对齐后输出对应Integer行数字... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目來源:

2021屆字節跳動算法崗筆試題

題目描述:

實現一個RGB字符串(如:rgb(0, 50,255) ),按24位數字對齊后輸出對應Integer型數字。R為高位,B為低位。

例如:輸入 rgb(0, 50,255) ,輸出13055

輸入描述:

字符串(如:rgb(0, 50,255) )

輸出描述:

輸出 number (如:11111)

示例1

輸入

rgb(192, 192, 192)

輸出

12632256

代碼

話不多說直接上代碼

思路:題目要求按24位對齊轉換,由此想到先把對應r,g,b位的Integer數字轉換成16進制,因為r,g,b的取值范圍是0-255,大于255也會按255算。正好對應十六進制0x00-0xff,一位16進制又對應4位二進制,六個16進制剛好是24位。之后把轉換好的16進制轉換為int型就可以了。

當然你也可以把r,g,b位的Integer數字直接轉換成三個8位的二進制這樣來算。

小提示:

格式化輸出 %

%o —— oct 八進制

%d —— dec 十進制

%x —— hex 十六進制

% 不支持二進制轉換,

要想實現直接輸出二進制可使用 format 函數來實現,或者自己根據需求編寫個二進制轉換函數。

def RGB_to_Int(Red,Green,Blue):

r, g, b = (Red, Green, Blue)

packed = int('%02x%02x%02x' % (r, g, b), 16)

print(packed)

if __name__ == "__main__":

arr = input("輸入數組:")

#截取字符串

str=arr[4:-1]

#獲取其中的數字

str2=str.split(',')

#把str轉為int,.strip()去除字符串首尾空格

Red=int(str2[0].strip())

Green=int(str2[1].strip())

Blue=int(str2[2].strip())

#調用

RGB_to_Int(Red,Green,Blue)

參考:RGB Int to RGB – Python

容易有疑問的地方

1.字符串中 百分號02x 是什么意思

1)首先該結構符合字符串格式化輸出的形式:

“%x%x%x” % (r,g,b)

其中 %x 是十六進制整數

2)其次 %02x 是對 %x 的進一步補充:

% 作為格式化輸出的格式符,可以用如下的方式進一步控制:

%[(name)][flags][width].[precision]typecode

(name)為命名;

flags可以有+,-,’ ‘或0。+表示右對齊。-表示左對齊。’

'為一個空格,表示在正數的左側填充一個空格,從而與負數對齊。0表示使用0填充;

width表示顯示寬度;

precision表示小數點后精度;

所以此處 %02x 表示寬度為 2 的十六進制整數、不夠 2 位用 0 填充

3)再回顧整體的 “#%02x%02x%02x” 其實就是類似 “#b7bb96” 等 rgb 顏色數據

參考:參考博客

2.%02x與%2x 之間的區別

1)輸出最小寬度

用十進制整數來表示輸出的最少位數。若實際位數多于定義的寬度,則按實際位數輸出,若實際位數少于定義的寬度則補以空格或0(當最小寬度數值以0開頭時)。

X 表示以十六進制形式輸出

02 表示不足兩位,前面補0輸出;如果超過兩位,則實際輸出

舉例:

printf("%02X", 0x345); //打印出:345

printf("%02X", 0x6); //打印出:06

而如果直接寫為 %2x,數據不足兩位時,實際輸出,即不額外補0輸出; 如果超過兩位,則實際輸出。

printf("%2X", 0x345); //打印出:345

printf("%2X", 0x6); //打印出:6

參考:參考博客

總結

以上是生活随笔為你收集整理的pythonrgb高精度浮点运算类型_python实现RGB字符串,按24位对齐后输出对应Integer行数字...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。