leojail
leojail

Reputation: 359

How to convert a string into four numbers?

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

Answers (2)

Nick Parsons
Nick Parsons

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

samuelcolt
samuelcolt

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

Related Questions