I2C Address Converter and Scanner Parser

Convert I2C addresses between 7-bit, 8-bit write/read, HEX, DEC, and BIN formats. Parse Arduino scanner logs and Linux i2cdetect output quickly.

I2C address conversion

Address converter

Enter an I2C address to convert.

Converted values

7-bit address (HEX)-
7-bit address (DEC)-
7-bit address (BIN)-
8-bit write (HEX)-
8-bit read (HEX)-
8-bit write (BIN)-
8-bit read (BIN)-
Linux i2cdetect style-
Arduino Wire style-

Scanner output parser

Paste Arduino I2C scanner logs, Linux i2cdetect output, or a plain HEX list. The parser extracts address candidates in 0x00–0x7F and converts each one.

Ready to parse scanner output.
Detected address 7-bit 8-bit write 8-bit read Reserved range
No parsed addresses yet.

What is a 7-bit I2C address?

Most I2C software APIs use a 7-bit slave address. In practical terms, the address value is usually shown as a hex number like 0x3C or 0x68.

7-bit vs 8-bit I2C address

Some datasheets show 8-bit values that include the R/W bit. If the 7-bit address is A, then 8-bit write is A << 1 and 8-bit read is (A << 1) | 1.

Arduino Wire address vs 8-bit address

Arduino Wire APIs usually expect the 7-bit address. That is why you pass 0x3C, while some datasheets list 0x78 and 0x79 for write/read byte values.

Linux i2cdetect address format

Linux i2cdetect output displays 7-bit addresses. If you compare that value with 8-bit write/read bytes in a datasheet, convert between both formats first.

Common I2C address examples

Device 7-bit address 8-bit write 8-bit read Notes
SSD1306 OLED0x3C0x780x79Common OLED module address
MPU-60500x680xD00xD1Common IMU address
DS3231 RTC0x680xD00xD1Common RTC address
BME2800x760xEC0xEDCommon sensor address
BME280 alternate0x770xEE0xEFAlternate sensor address
24Cxx EEPROM0x500xA00xA1Common EEPROM base address

FAQ

What is the difference between 7-bit and 8-bit I2C addresses?

A 7-bit address identifies the slave device. 8-bit values include an extra read/write bit in the least significant bit.

Why does Arduino use 0x3C while some datasheets show 0x78?

Arduino Wire APIs usually take the 7-bit value (0x3C). Datasheets that show 0x78 are often showing the 8-bit write byte.

What address format does Linux i2cdetect show?

Linux i2cdetect shows 7-bit addresses. Use conversion when comparing with 8-bit write/read values in datasheets.

What I2C addresses are reserved?

Commonly usable 7-bit addresses are 0x08 to 0x77. Values 0x00–0x07 and 0x78–0x7F are reserved ranges.

Related tools