1. 程式人生 > 實用技巧 >【Luogu P4809】[CCC 2018]最大戰略儲備

【Luogu P4809】[CCC 2018]最大戰略儲備

無需安裝,匯入就可以使用

有何用途:

答,比如想把一張圖片嵌入到程式碼中時,因為圖片是二進位制資料,程式碼是文字檔案,這時候就需要把二進位制資料編碼成文字,就需要用到base64,編碼後3位元組變成4位元組

import io, base64
import pygame
from pygame.locals import *
# input = open('ball.png', 'rb')
# output = open('aaa.txt', 'wb')
# base64.encode(input, output)
# baseStr = base64.b64encode(open('ball.png', 'rb').read())  # 編碼後的進位制制
# byte = base64.b64decode(baseStr) # print(byte) # 原始二進位制 # input.close() # output.close() # # aaa.txt裡面就是圖片的base64編碼 class Ball(pygame.sprite.Sprite): def __init__(self, color, initial_position): pygame.sprite.Sprite.__init__(self) bt = base64.b64decode( """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 7c+tHq93/hdfN8bS4WaZagAAAABJRU5ErkJggg==
""") ball_file = io.BytesIO(bt) self.image = pygame.image.load(ball_file).convert_alpha() self.rect = self.image.fill(color, None, BLEND_ADD) self.rect.topleft = initial_position pygame.init() screen = pygame.display.set_mode([350, 350]) ball = Ball((255, 0, 0), (100, 100)) screen.blit(ball.image, ball.rect) pygame.display.update()
while pygame.event.poll().type != KEYDOWN: pygame.time.delay(10)