This is the ABI encoding format used by Solidity, which is documented in the Contract ABI Specification. Basically, static values (e.g., numbers, booleans, bytes1..32) are encoded into 32 bytes (64 hexadecimal characters), and dynamic values are encoded at the end, where a pointer to the location is encoded in place instead.
Using your result as an example, ...
According to metamask docs:
string - An array of a single, hexadecimal Ethereum address string.
Requests that the user provides an Ethereum address to be identified by. Returns a Promise that resolves to an array of a single Ethereum address string. If the user denies the request, the Promise will reject with a 4001 ...
Short answer: you need the ABI in order to call the contract.
Let's talk a bit about how to get it, and then talk about one way you'll still be able to interact with the contract if you don't have it (by writing your own for the part of the contract you need to interact with).
Etherscan has something called verified contracts. You can check if ...