The answer may depend on whether the value bit width is important to you.
Short answer:
string hx = "FF00";
uint intVal = Convert.ToUInt32(hx, 16);
uint twosComp = ~v + 1;
string h = string.Format("{0:X}", twosComp);
The value his "FFFF0100", which is a 32-bit addition to hx. If you were expecting "100", you need to use 16-bit computing:
string hx = "FF00";
ushort intVal = Convert.ToUInt16(hx, 16);
ushort twosComp = (ushort)(~v + 1);
string h = string.Format("{0:X}", twosComp);
, uint UInt32 ushort UInt16. , , .