The reason for the double backslashes is that they have a special meaning when used singly so need to be used this way to indicate that in this use case you really do want a backslash
If the volume is actually an integer you don't need to convert it to a string first
Try these 2 examples and investigate the sprintf() function some more. If required you can use multiple variables in the same command to build the required string
By the look of it, it's not a really a string, it's actually a byte buffer. I would write it like that instead of using the \Xnn escape sequence notation of a cString.
byte command[] = {0x53, 0x25, 0x81, 0x00, 0x1A, 0x00};// do we need the trailing 0x00 ?
you are sending six bytes: byte command[6] = {0x53, 0x25, 0x81, 0x00, 0x1A, 0x00};
Did you want to send five bytes? That would be: byte command[5] = {0x53, 0x25, 0x81, 0x00, 0x1A};
In either case, use something like this to change the value of the byte containing 0x00: