12

I have a contract with a public variable that's bytes32. If I enter the value 20160528 then it auto converts to bytes32. Is there anyway to convert it back from the nodejs terminal? I've been trying

web3.toAscii(testInstance.Date.call()) 

but it just gives me nonsense. Here is the the test code:

contract test {
  bytes32 public Date;

  function test(bytes32 _date){
      Date=_date; 
  }
}
  • Convert back to 20160528 ? – Gawey Jul 26 '17 at 6:58
25

For web3 0.x:

You need to use web3.fromAscii(val) to write correct bytes32 input to contract.

And you are right, anyone can read it with web3.toAscii(val).

Full web3.js code in terms of your designations:

//sets bytes32
testInstance.test.sendTransaction(web3.fromAscii("20160528"), options);

//gets bytes32
testInstance.Date.call(function(err, val) {
    if  (err) console.log(err);
    console.log(web3.toAscii(val));
    // will print "20160528"
 });

For web3 1.0:

You need to use web3.utils.fromAscii(val) to write correct bytes32 input to contract.

And you are right, anyone can read it with web3.utils.toAscii(val).

Full web3.js code in terms of your designations:

//sets bytes32
testInstance.methods.test(web3.utils.fromAscii("20160528")).send(options);

//gets bytes32
testInstance.methods.Date().call(function(err, val) {
    if  (err) console.log(err);
    console.log(web3.utils.toAscii(val));
    // will print "20160528"
 });
  • 2
    I'm getting an error Uncaught (in promise) TypeError: hex.substring is not a function when trying to log val, which seems to be a complex object. Have things changed in web3 recently? – Stan James Oct 5 '17 at 23:59
  • 2
    @StanJames I've updated my answer with the code for web3 1.0. Previous one was for web 0.x – Viktor Baranov Oct 6 '17 at 16:36
  • How to deal with trailing zeroes? – Shubham Chadokar May 19 at 15:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.