Reputation: 359
I want to have a string that can be converted into four numbers.
For example, it converts a string from E17B1237 into (225, 123, 18, 55), this is converted from hexadecimal into decimal.
E1 => 225,
7B => 123,
12 => 18,
37 => 55.
How can I do it? hexadecimal into decimal is just an example, is there any way to do that?
How do I distinguish a string E17B1237, split into (225, 123, 18, 55), then do the conversion. Thanks.
Because I want to have a rectangle in the coordinate, and use x, y, w, h to create a unique ID, then I can also use the unique ID to retrieve x, y, w, h.
How do I create a unique ID(from x,y,w,h) that can be clear to split into four numbers, then do the conversion.
Upvotes: 0
Views: 280
Reputation: 50759
Assuming each hex code within your string has a length of 2, you can chunk your string into an array using .match(/[0-9A-F]{2}/ig)
to match consecutive runs of two characters to get the following array:
['E1', '7B', '12', '37']
Once you have this array, you can use .map()
on it to return a new array, where each hex code element within your array is converted into its equivalent base 10 (decimal) value. You can do this with the help of parseInt(string, radix)
, by passing 16
(the base for hexadecimal) as the radix to convert from:
const hexStr = 'E17B1237';
const res = hexStr.match(/[0-9A-F]{2}/ig).map(hexPart => parseInt(hexPart, 16));
console.log(res);
Upvotes: 2
Reputation: 263
You can use toString paramters to convert
function convert(value, from, to) {
return parseInt(value, from).toString(to);
}
console.log(
convert('e1', 16, 10),
convert('123', 10, 16),
);
Upvotes: 1