Colin's answer is basically THE answer, just adding some more info. The tool you need is called an assembler, not an arm to hex converter. You can then use a disassembler to see it, for example with your program using gnu tools:
arm-none-eabi-as so.s -o so.o
arm-none-eabi-objdump -D so.o
produces
00000000 <.text>:
0: e3a0ab3e mov r10, #63488 ; 0xf800
4: e1a09386 lsl r9, r6, #7
8: e78b4008 str r4, [r11, r8]
c: e1a06357 asr r6, r7, r3
And how the processor interprets the machine code is well documented in the ARM ARM, probably start with the ARMv5 one, which the older less complicated one. ARMv6, ARMv7 have a lot more operating system and protection features, mostly the same instruction set, although more thumb instructions, then ARMv8 is a hybrid with aarch32 the older ARMv4 to ARMv7 instruction set then a completely new aarch64 instruction set in the same core. So google arm architectural reference manual, some folks have illegally left them laying around or go to infocenter.arm.com to get the real ones.