In general, you can simply translate the signed to unsigned and vice versa. Most of the time, you are still interested in the bit value of bytes. They remain unchanged in both systems (because numbers with two additions were defined). Now, if you have grown to a value that uses more bits, and you want to convert to an unknown positive number, just use bitwise AND using 1 bit for the number of bits you need.
In c # you can use
int negInt = (sbyte) b; byte anotherB = (byte) negInt;
and in Java use:
int posInt = b & 0xFF; byte anotherB = (byte) posInt;
You can use this functionality when you need the value of bytes as numbers. Otherwise, you can simply store the bit in an array of bytes - signed or unsigned.
This method should also work for specifying the entire byte array - as you used in the C # example:
new byte[] {59, 55, 79, 1, 0, 64, (byte)-32, (byte)-3};
or even
new byte[] {(byte)59, (byte)55, (byte)79, (byte)1, (byte)0, (byte)64, (byte)-32, (byte)-3};
You may need to add unchecked() if you are using C #.
The same goes for Java:
new byte[] { (byte) 255, etc. }
for this kind of conversion, you might want to learn how to use find / replace regular expressions in your favorite editor.
In the end, it takes a little play with casting and bitwise AND to get an idea about it. As soon as you understand, he will never leave you.