헥사 뷰어 구현을 해보는 중에 nodejs에서 문자열 포맷을 사용할 방법을 찾아보다가 괜찮은 모듈을 찾았다.
https://www.npmjs.com/package/sf
예시로
var sf = require("sf");
sf("{who} has a {what}", { who: 'dog', what: 'tail' });
// returns: dog has a tail
sf("{0} has a {1}", 'dog', 'tail');
// returns: dog has a tail
sf("{0:#,##0.00}", 2123.1);
// returns: 2,123.10
sf("{0,15:#,##0.00}", 2123.1);
// returns: 2,123.10
sf("{a.b}", { a: { b: 'test' }});
// returns: test
sf("{a.z.c}", { a: { b: 'test' }});
// throws an error
sf("{a.?z.?c}", { a: { b: 'test' }});
// returns:
sf("{a[0]}", { a: [ 'foo', 'bar' ]});
// returns: foo
sf("{a[-1]}", { a: [ 'foo', 'bar' ]});
// returns: bar
sf.log("{who} has a {what}", { who: 'dog', what: 'tail' });
// outputs to standard out: dog has a tail
sf("{0:^d 'Days,' h:mm:ss.fff}", new sf.TimeSpan(8173818181));
// returns: 94 Days, 14:30:18.181
올라와 있었는데, 2자리 16진수 표현이 필요하였기에 사용 설명을 마저 읽어보니
가 있었다.
이를 보고 적용하여
data = sf("{0:x2}{1:x2}", chunk[0], chunk[1]);
로 적용하니
원하는대로 한 번에 읽은 바이트를 지정된 포맷에 맞게 붙어서 표기가 되었다.
이 포맷 외에도 쓸만한 기능들은 많아 보이니 나중에 필요할 때 한 번씩 다시 봐야겠다.