With perl:
perl -C -lne '
if (/=(.*)/) {$c{$_}++ for split //, $1}
END{print join ",", map {sprintf "0x%X", ord$_} sort keys %c}
' your-file
Gives:
0x42,0x46,0x61,0x63,0x64,0x69,0x6E,0x6F,0x72,0x7A,0xDC,0xE9,0xF8,0x3AC,0x3B5,0x3B7,0x3B9,0x3BA,0x3BB,0x3BD
-C does UTF-8 I/O if the locale uses UTF-8 as its charmap
-ln sed -n mode, where the code is run on each line of the input. -l removes the line delimiter from the input, and adds it back on output (does a $\ = $/)
-e 'code' to specify the code to run on the command line instead of from a script.
/=(.*)/ to match on lines contains at least one = capturing what's after the first occurrence in $1 (the first capture group).
split //, $1 splits it with an empty separator, so into the individual characters
$c{$_}++ for that-above loops over that list of characters and increments a corresponding associate array element. %c maps characters to their count of occurrence. We don't use that count here.
END{code}, code only run in the end.
sort keys %c sorts the keys of that associative array lexically
map { code } @list to transform a list by applying the code on each element.
ord$_ gets the numeric value of the character.
sprintf "0x%X" formats it as hex (with capital ABCDEF, but 0x in lower case).
join ",", @list joins the list with ,
print prints it followed by $\ (newline).
In zsh (likely a lot less efficient):
$ set -o cbases -o extendedglob
$ LC_COLLATE=C
$ echo ${(j[,])${(ous[])"$(<your-file cut -sd= -f2- | tr -d '\n')"}/(#m)?/$(([#16]#MATCH))}
0x42,0x46,0x61,0x63,0x64,0x69,0x6E,0x6F,0x72,0x7A,0xDC,0xE9,0xF8,0x3AC,0x3B5,0x3B7,0x3B9,0x3BA,0x3BB,0x3BD
Or without using external utilities:
$ set -o cbases -o extendedglob
$ LC_COLLATE=C
$ echo ${(j[,])${(@ous[])${(f)"$(<your-file)"}#*=}/(#m)?/$(([#16]#MATCH))}
0x42,0x46,0x61,0x63,0x64,0x69,0x6E,0x6F,0x72,0x7A,0xDC,0xE9,0xF8,0x3AC,0x3B5,0x3B7,0x3B9,0x3BA,0x3BB,0x3BD
"$(<you-file)" contents of the file, with trailing newline characters removed, quoted so it's not IFS-split
${(f)param} splits on line-feed to get the lines as a list
${array#*=} removes the shortest leading part matching *= from array elements.
@ flag to ensure list processing
o order lexically (based on code point in the C locale)
unique removes duplicates
s[] splits into individual characters.
${array/(#m)?/$(([#16]#MATCH))} substitutes the character (?) captured in $MATCH thanks to (#m) with it's value (#MATCH in arithmetic expression) formatted in base 16 [#16]. With the cbases option, that as 0xBEEF instead of 16#BEEF
j[,] joins with ,.
Breaking it down into the individual steps would make it more legible:
set -o cbases -o extendedglob
LC_COLLATE=C
contents=$(<your-file)
lines=( ${(f)contents} )
values=( ${lines#*=} )
chars=( ${(@ous[])values} )
codepoints=( ${chars/(#m)?/$(( [#16] #MATCH ))} )
echo ${(j[,])codepoints}