2
bada55
のような16進文字列をUint8Array
に変換して元に戻したいとします。16進文字列をUint8Arrayに変換してJavaScriptに戻す方法は?
bada55
のような16進文字列をUint8Array
に変換して元に戻したいとします。16進文字列をUint8Arrayに変換してJavaScriptに戻す方法は?
ここRamdaを使用してソリューションです:
const hexadecimalToUint8Array = string =>
new Uint8Array(R.map(byte => parseInt(byte, 16), R.splitEvery(2, string)))
const uint8ArrayToHexadecimal = array =>
R.reduce((string, byte) => string + byte.toString(16), '', array)
const badass = hexadecimalToUint8Array('bada55')
console.log(badass, '=', uint8ArrayToHexadecimal(badass))
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.22.1/ramda.min.js"></script>
ここでネイティブJavaScriptでソリューションです:
var string = 'bada55';
var bytes = new Uint8Array(Math.ceil(string.length/2));
for (var i = 0; i < bytes.length; i++) bytes[i] = parseInt(string.substr(i * 2, 2), 16);
console.log(bytes);
var convertedBack = '';
for (var i = 0; i < bytes.length; i++) {
if (bytes[i] < 16) convertedBack += '0';
convertedBack += bytes[i].toString(16);
}
console.log(convertedBack);