Work with Hex Data
Ethereum transmits all data as hex-encoded strings over JSON-RPC — addresses, transaction data, balances, and block numbers are all hex. Nethereum handles most conversions automatically, but you'll need these utilities when working with raw RPC responses, building custom tooling, or debugging on-chain data.
Install
dotnet add package Nethereum.Hex
Byte Arrays to Hex
var data = new byte[] { 0xDE, 0xAD, 0xBE, 0xEF };
var hexWithPrefix = data.ToHex(prefix: true); // "0xdeadbeef"
var hexWithoutPrefix = data.ToHex(prefix: false); // "deadbeef"
Hex to Bytes
var hex = "0xdeadbeef";
var bytes = hex.HexToByteArray();
// bytes == { 0xDE, 0xAD, 0xBE, 0xEF }
Hex Prefix Handling
var withoutPrefix = "deadbeef";
var withPrefix = "0xdeadbeef";
withoutPrefix.EnsureHexPrefix(); // "0xdeadbeef"
withPrefix.EnsureHexPrefix(); // "0xdeadbeef"
withPrefix.HasHexPrefix(); // true
withPrefix.RemoveHexPrefix(); // "deadbeef"
Compare Hex Strings
Case-insensitive comparison that ignores prefix differences.
var hex1 = "0xDeAdBeEf";
var hex2 = "0xdeadbeef";
hex1.IsTheSameHex(hex2); // true
HexBigInteger for Gas and Value
HexBigInteger wraps a BigInteger and serializes as a hex string in JSON-RPC calls.
var fromNumber = new HexBigInteger(new BigInteger(1_000_000));
var fromHex = new HexBigInteger("0xf4240");
// Both represent the same value
// fromNumber.HexValue == "0xf4240"
// fromHex.Value == 1_000_000
UTF-8 String Encoding
var text = "Hello Ethereum";
var hex = text.ToHexUTF8();
var decoded = hex.HexToUTF8String(); // "Hello Ethereum"
Next Steps
- ABI Encoding -- encode and decode smart contract data
- RLP Encoding -- the low-level serialization format used for transactions and trie nodes