Impacchettatore RGB in RGB555
Compatti un colore RGB in una parola RGB555 a 15 bit: l’arancione 255, 128, 0 diventa 32256, cioè 0x7E00. Ogni canale conserva i suoi cinque bit più alti, la disposizione delle modalità high color VGA e dei vecchi giochi per PC. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Resistenza (Ω)
- 255
- G
- 128
- B
- 0
- R5
- 31
- G5
- 16
- B5
- 0
- R quantizzato
- 248
L'hardware grafico d'epoca memorizza il colore come una parola RGB555 di quindici bit, non come tre canali da otto bit. Questo impacchettatore da RGB a RGB555 accetta interi di rosso, verde e blu da zero a duecentocinquantacinque, tronca ciascun canale a cinque bit scartando i tre bit meno significativi e impacchetta il risultato con il rosso nei bit da quattordici a dieci, il verde nei bit da nove a cinque e il blu nei bit da quattro a zero. Il bit alto inutilizzato resta a zero, così l'intero impacchettato sta sempre tra zero e trentaduemilasettecentosessantasette. Il motore è del tutto deterministico: niente rete, seme casuale o orologio a muro.
Che cosa significa impacchettare in RGB555 e come si costruisce la parola a quindici bit
Lo sRGB a otto bit, il modello che usano CSS e gli strumenti di pittura moderni, assegna a ciascuno di rosso, verde e blu duecentocinquantasei livelli distinti. L'high-color a quindici bit, spesso chiamato RGB555, conserva solo trentadue livelli per canale. La conversione storica è un troncamento, non un arrotondamento percettivo: si sposta ciascun canale a otto bit di tre bit verso destra, equivalente a una divisione intera per otto scartando il resto.
Il rosso puro duecentocinquantacinque diventa trentuno, il grigio medio centoventotto diventa sedici, e qualunque valore da zero a sette collassa a zero. Quei tre campi a cinque bit vengono poi impacchettati in un intero senza segno con il rosso nei bit da quattordici a dieci, il verde nei bit da nove a cinque e il blu nei bit da quattro a zero. Il bit quindici resta inutilizzato e si scrive sempre zero, così la parola impacchettata non supera mai trentaduemilasettecentosessantasette, ossia l'esadecimale 0x7FFF.
Questo è il tracciato RGB555 documentato dal colore a 15 bit di Windows, dai modi VGA high-color e da molti motori per PC, non lo scambio BGR555 di alcune palmari, dove il blu occupa i cinque bit di dati alti.
Contratto d'ingresso, regole di troncamento e convalida che non limita mai
Gli spazi esterni dei canali in stringa vengono tagliati. Un valore è legale solo se è un intero finito da zero a duecentocinquantacinque inclusi. Quei fallimenti non vengono addebitati.
Non c'è limitazione silenziosa né arrotondamento al livello più vicino: sette spostato di tre bit a destra è zero, otto diventa uno, e duecentocinquantacinque diventa trentuno. Quella regola di solo troncamento coincide con il percorso hardware dei DAC VGA high-color e di innumerevoli convertitori di risorse che scartano i tre bit meno significativi prima di scrivere un framebuffer a quindici bit.
Dopo la convalida il motore impacchetta rgb555 come il rosso a cinque bit spostato di dieci a sinistra, disgiunzione bit a bit con il verde a cinque bit spostato di cinque a sinistra, disgiunzione bit a bit con il blu a cinque bit. L'arancio duecentocinquantacinque, centoventotto, zero diventa quindi trentuno, sedici, zero e si impacchetta in trentaduemiladuecentocinquantasei, scritto 0x7E00. Il bianco duecentocinquantacinque su ogni canale si impacchetta nel massimo trentaduemilasettecentosessantasette.
Il nero si impacchetta in zero.
Dove un impacchettatore da RGB a RGB555 si giustifica, e quanto costa
Le catene di strumenti retrò incontrano questa corrispondenza quando un editor di tavolozza deve emettere le stesse parole a quindici bit che un modo VGA high-color o un vecchio motore per PC memorizzava nella memoria video, quando un convertitore di sprite scrive un blob binario di tavolozza, o quando una prova di emulatore confronta un framebuffer impacchettato con un dump di riferimento.
Chi modifica ROM e le pipeline di risorse lo usano per trasformare bozzetti moderni a otto bit nell'aspetto grezzo a trentadue livelli per canale dell'high-color a 15 bit, senza erigere un'intera libreria grafica. I corsi di informatica lo impiegano come esercizio pulito di scorrimento: gli studenti verificano che duecentocinquantacinque spostato di tre bit a destra è trentuno e che la parola impacchettata del bianco è 0x7FFF.
Chi sviluppa front-end e pubblica ancora compatibilità per formati storici, o documenta come apparirà un'esportazione di tela dopo la quantizzazione a cinque bit, può chiamare lo stesso contratto da uno script. Abbini l'impacchettatore gratuito da RGB a RGB555 nel browser a convertitori hex o HSL quando il passo successivo è un foglio di stile, e all'impacchettatore di intero RGB a 24 bit quando servono otto bit per canale invece di cinque. In questa pagina il lavoro gira interamente sul Suo dispositivo.
Casi d'uso
Tavolozze VGA high-color e motori PC d'epoca
Converta campioni di bozzetto a otto bit nelle parole RGB555 a 15 bit che un modo VGA high-color o un motore PC classico memorizzava nella memoria video.
Insegnare gli scorrimenti e la quantizzazione a cinque bit
Lasci che gli studenti verifichino che ciascun canale è troncato con uno scorrimento a destra di tre e impacchettato con il rosso nei bit 14–10, senza scrivere a mano quegli scorrimenti.
Domande frequenti
Come si impacchetta RGB a 8 bit in un valore RGB555?
Il rgb555 della risposta è la parola a 15 bit ((r>>3)<<10) | ((g>>3)<<5) | (b>>3), data anche in hex e come stringa binaria a 15 bit.
Come viene troncato ciascun canale a cinque bit?
Il motore scarta i tre bit meno significativi con uno scorrimento a destra di tre (divisione intera per otto). Non c'è arrotondamento: 7 diventa 0, 8 diventa 1 e 255 diventa 31.
Qual è l'intervallo dell'intero RGB555 impacchettato?
Da zero a 32767 (0x0000 a 0x7FFF). Il bit 15 è inutilizzato e resta a zero. Il bianco puro si impacchetta in 32767; il nero puro si impacchetta in 0.
Che succede se un canale esce da 0–255?
I canali non vengono mai limitati né avvolti, e la convalida fallita non viene addebitata.
L'impacchettatore da RGB a RGB555 è gratuito?
Lo strumento del browser gira gratis sul Suo dispositivo.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/color/rgb-rgb555 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"r":255,"g":128,"b":0}'const res = await fetch("https://api.kit.forhosting.com/color/rgb-rgb555", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"r": 255,
"g": 128,
"b": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/rgb-rgb555",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"r": 255,
"g": 128,
"b": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/rgb-rgb555", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"r":255,"g":128,"b":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"r":255,"g":128,"b":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/rgb-rgb555", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"r": 255,
"g": 128,
"b": 0
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.rgb_rgb555",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
min_channel | 0 |
max_channel | 255 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Designer, autori di emulatori e catene di strumenti per giochi retrò usano questa corrispondenza quando una tavolozza, un framebuffer o un dump BIOS si aspetta il tracciato storico high-color a quindici bit dei modi VGA, dei vecchi giochi per PC e di molte API grafiche. I canali fuori dall'intervallo legale di otto bit falliscono con invalid_input invece di avvolgersi o essere limitati in silenzio. Lo usi gratis nel browser per tavolozze e verifiche didattiche, oppure chiami l'API a $0.002 per voce corretta quando una pipeline di compilazione richiede lo stesso contratto.
Che cosa significa impacchettare in RGB555 e come si costruisce la parola a quindici bit
La risposta ripete i r, g e b originali, espone i campi a cinque bit come r5, g5 e b5, ricostruisce l'aspetto quantizzato a otto bit come quantized_r, quantized_g e quantized_b spostando di tre posizioni a sinistra, e pubblica l'intero impacchettato come rgb555 insieme a una forma hex 0x, quattro cifre esadecimali maiuscole, una stringa binaria di quindici caratteri, un'eco css_rgb dell'ingresso, l'etichetta di metodo rgb_to_rgb555, la stringa della formula, bits_per_channel pari a cinque e max pari a trentaduemilasettecentosessantasette. Ingressi identici producono sempre lo stesso JSON perché il percorso è aritmetica pura.
Contratto d'ingresso, regole di troncamento e convalida che non limita mai
Invii con POST un corpo JSON con tre interi obbligatori: r per il rosso, g per il verde e b per il blu. Ciascun campo può arrivare come numero JSON o come stringa di cifre; gli alias red e R maiuscola, green e G maiuscola, e blue e B maiuscola sono accettati così fogli di calcolo e moduli tipizzati riutilizzano lo stesso contratto. Campi assenti, stringhe vuote, testo non numerico, Infinity, NaN, frazioni come centoventotto punto cinque, negativi e qualunque canale di duecentocinquantasei o più falliscono con invalid_input che nomina il campo e dichiara che deve restare tra zero e duecentocinquantacinque.
Dove un impacchettatore da RGB a RGB555 si giustifica, e quanto costa
Tramite l'API ogni impacchettamento riuscito costa $0.002; i fallimenti di convalida non consumano saldo e nulla viene memorizzato dopo il ritorno della risposta.
Casi di integrazione
Fixture di emulatore e convertitori di sprite
Impacchetti voci di tavolozza e pixel di framebuffer in interi RGB555 deterministici così prove di emulatore e convertitori di risorse possono affermare dump binari.