String to hex TypedArray.map different from Array.from(TypedArray)

152 views Asked by At

String to hex is the goal. Getting a different result when using map directly on a TypedArray vs using Array.from on the TypedArray then using map. Can someone help me understand what is going on?

var buf = new TextEncoder().encode('hello');

var ret = '';
for (var b of buf) ret += b.toString(16).padStart(2, '0').slice(-2);

console.log(
    '\n',
    buf.join(), // 104,101,108,108,111
    '\n',
    buf.map(x => x.toString(16).padStart(2, '0').slice(-2)).join(''), // 6865000 
    '\n',
    Array.from(buf).join(), // 104,101,108,108,111 
    '\n',
    Array.from(buf).map(x => x.toString(16).padStart(2, '0').slice(-2)).join(''), // 68656c6c6f 
    '\n',
    ret, // 68656c6c6f 
    '\n',
    decodeURIComponent('%' + ret.match(/.{1,2}/g).join('%')) // hello
);
/*
 104,101,108,108,111 
 6865000 
 104,101,108,108,111 
 68656c6c6f 
 68656c6c6f 
 hello
*/
0

There are 0 answers