Я так понимаю, что вместо #define можно было использовать и int, но c #define мы просто экономим память?
А вот с преобразованием, -48 не понятно. По ASCII 48 это вроде-бы 0... Преобразование из Char в Byte дает нам дополнительно еще 7 байт? Зачем? Если можно, опиши пожалуйста подробнее (научно-практический комментарий)