Platformio HMC5883L with wire.h

#include <Arduino.h>
#include <Wire.h>

const int HMC5883L_Address = 0x3C;

const int Reg_Config_A = 0x00;
const int Reg_Config_B = 0x01;
const int Reg_Mode = 0x02;
const int Reg_Out_X_M = 0x03;
const int Reg_Out_Z_M = 0x05;
const int Reg_Out_Y_M = 0x07;

void setup() {
Serial.begin(9600);
Wire.begin(21, 22);

Wire.beginTransmission(HMC5883L_Address);
Wire.write(Reg_Config_A);
Wire.write(0x70);
Wire.endTransmission();

Wire.beginTransmission(HMC5883L_Address);
Wire.write(Reg_Config_B);
Wire.write(0xA0);
Wire.endTransmission();

Wire.beginTransmission(HMC5883L_Address);
Wire.write(Reg_Mode);
Wire.write(0x00);
Wire.endTransmission();
}

void loop() {
int x, y, z;

Wire.beginTransmission(HMC5883L_Address);
Wire.write(Reg_Out_X_M);
Wire.endTransmission();

Wire.requestFrom(HMC5883L_Address, 6);
if (6 <= Wire.available()) {
x = Wire.read() << 8 | Wire.read();
z = Wire.read() << 8 | Wire.read();
y = Wire.read() << 8 | Wire.read();
}

Serial.print("X: “); Serial.print(x);
Serial.print(” Y: “); Serial.print(y);
Serial.print(” Z: "); Serial.println(z);

delay(500);
}

i use esp32 and i tested this code with hmc5883l address 0x1e and 0x3c both.
in serial monitor, requstfrom return error
[212811][E][Wire.cpp:513] requestFrom(): i2cRead returned Error 263

Regarding to Espressif’s Error Codes Reference:
Error 263 (decimal) = 0x107 (hex) = ESP_ERR_TIMEOUT

Have you tried the WireScan example?