[英]Fetching n bytes from memory
假設我有一個指向具有3個通道(RGB),每個通道8位的圖像數據的指針,並且我想顯示像#000000這樣的像素值,它是24位數字。 數據的存儲方式類似於RGB RGB RGB ...所以我真的需要讀取前三個字節。
typedef unsigned char uchar;
uchar* data = get_image_data_somehow();
也許比我想象的要容易,但是如果我有四個字節,我可以做類似的事情
uint32 value = *((uint32*) data);
printf("Value is %x", value);
怎么做? 原則上,我需要32位1,並用零填充前8位。
您可以右移8位以達到此目的。
uint32_t value = *((uint32_t*) data) >> 8;
printf("Value is %0X", value);
data
為值#1177ff
兩個像素的#1177ff
:
data = 11 77 ff 11 77 ff
value = 11 77 ff 11
value >> 8 = 00 11 77 ff
memcpy( &value, data, 3 );
value &= 0x00FFFFFF;
(假設您使用的是Little-Endian機器)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.