Created
June 27, 2013 10:29
-
-
Save valentinkostadinov/5875467 to your computer and use it in GitHub Desktop.
JavaScript HEX encoding
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| function toHex(s) { | |
| // utf8 to latin1 | |
| var s = unescape(encodeURIComponent(s)) | |
| var h = '' | |
| for (var i = 0; i < s.length; i++) { | |
| h += s.charCodeAt(i).toString(16) | |
| } | |
| return h | |
| } | |
| function fromHex(h) { | |
| var s = '' | |
| for (var i = 0; i < h.length; i+=2) { | |
| s += String.fromCharCode(parseInt(h.substr(i, 2), 16)) | |
| } | |
| return decodeURIComponent(escape(s)) | |
| } |
nice
A better way is to use %20 format, like that:
function toHex(s) {
let h = ''
for (let i = s.length - 1; i >= 0; i--)
h = '%'+ s.charCodeAt(i).toString(16) + h
return h
}
toHex('test') // "%74%65%73%74"
decodeURIComponent('%74%65%73%74') // testYou are a life saver. I just needed to tweak your code to get what I have been looking for since 5 hours.
I needed to get 00480065006c006c006f instead of 48656c6c6f by converting the word Hello to utf-16
Thank you again
I wonder why nobody has made a @tc39 proposal to standardize and include this in JS. It's funny that JS has hex processing can only be done on atob & btoa butNumbers in vanilla JS.
Edit: atob and btoa aren't part of ES, so they don't count
> h = 'hello 🤣';
'hello 🤣'
> const encoded = Buffer.from(h).toString('hex');
undefined
> encoded
'68656c6c6f20f09fa4a3'
> Buffer.from(encoded, 'hex').toString();
'hello 🤣'
>
@MGF15 that's only possible in NodeJS, this Gist is portable
Actually, this Gist is also not portable between environments. My bad
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
awesome thanks a lot friend