Как разбить целое число на отдельные байты и снова объединить их во FreeBASIC? - PullRequest
0 голосов
/ 15 ноября 2011

Я делаю простую программу стеганографии, чтобы скрыть данные в файлах PNG.Декодировать / кодировать отдельные байты было легко, но мне также нужно скрыть заголовок в файле PNG.Этот заголовок будет содержать размер файла в байтах, чтобы точно знать, сколько байтов мне нужно для извлечения файла (слишком много байтов и tge извлеченный файл будет поврежден).поскольку целые числа в FB имеют ширину 32 бита, это приведет к четырем отдельным байтам).Затем эти байты будут закодированы в первые 16 пикселей изображения PNG (в моем стеганографическом алгоритме закодирован 1 декодированный байт = 4, и я использую только значения R и B для хранения данных).Как я могу это сделать?

TL; DR: мне нужно знать, как разбить целые числа на четыре отдельных байта, а затем снова объединить эти байты в целые числа.

1 Ответ

1 голос
/ 15 ноября 2011

Мой друг на форумах FB, Mysoft создал этот пример, как это сделать .Кроме того, спасибо за отзывчивость и быстрый ответ сообществу stackoverflow.

dim as integer x = &hFF88442211, y
dim as integer b1,b2,b3,b4

b1 =  x and &hFF
b2 = (x shr 8) and &hFF
b3 = (x shr 16) and &hFF
b4 = (x shr 24) and &hFF

y = b1+(b2 shl 8)+(b3 shl 16)+(b4 shl 24)

print hex$(x),hex$(y)
print hex$(b1),hex$(b2),hex$(b3),hex$(b4)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...