If you can use character code changes to effect this, that would be easier. This is a "roll your own" approach.
Think of a one-to-one translation, using an array. The letters and digits in the hex string, all have a value - A is 65, B is 66, etc. Of course, the digits have an integer value as well.
The hex values - whether letters or a digit, have a value that can be used. In this case, for the index of the translate array. translate['A'] (same as translate), also has a value it holds. For this purpose, the translate[index] values will be assigned the corresponding values in Arabic.
This has to be assigned in your code, before anything else can be done.
Now it's just a matter of reading in the hex values, and assigning the corresponding values to the arabic string.
//you have char arabic[SIZE] and char translate[SIZE]
//and print out the arabic string with %s format in printf()
The warning here is that I know nothing about Arabic. If Arabic has no single letter or mark that translates into each letter of the hex string, then you'll have to adjust this algorithm, and possibly scrap it entirely. The digits should be no problem, since our digits are based on ancient Arabic numerals.