# Caver.utils 버그 발견 (hexToNumber)

**URL:** <https://devforum.kaia.io/t/caver-utils-hextonumber/2867>\
**Category:** Caver\
**Tags:** caver-js, klaytn\
**Created:** [12월 18, 2021, 2:06오후 UTC](https://devforum.kaia.io/t/caver-utils-hextonumber/2867 "2021-12-18T14:06:45Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![klay](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/klay/32/1277_2.png) [@klay](https://devforum.kaia.io/u/klay)\
**Post date:** [12월 18, 2021, 2:06오후 UTC](https://devforum.kaia.io/t/caver-utils-hextonumber/2867/1 "2021-12-18T14:06:45Z")

</div>

안녕하세요, 클린이입니다.

caver에 아래와 같이 변환 버그가 있습니다.

```auto
caver.utils.hexToNumber('17')
//17 이 나오는데 함수명 처럼 Input 값을 hex값으로 본다면 23이 맞습니다.
caver.utils.hexToNumber('c')
//12 가 잘 나옵니다.

```

Call 실행 결과로 uint 배열이 다음과 같이 오는데,  
어떻게 처리 해야 할지 몰라 직접 파싱 하다가 찾았네요.

`0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000009000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000090000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000013000000000000000000000000000000000000000000000000000000000000000b0000000000000000000000000000000000000000000000000000000000000017`

혹시 한번에 이런 hex 값을 배열로 처리 할 수 있는 함수가 있으면 알려주시면 감사하겠습니다.

---

<div class="post-metadata">

**Author:** ![kkookk](https://avatars.discourse-cdn.com/v4/letter/k/71c47a/32.png) [@kkookk](https://devforum.kaia.io/u/kkookk)\
**Post date:** [12월 21, 2021, 6:52오전 UTC](https://devforum.kaia.io/t/caver-utils-hextonumber/2867/2 "2021-12-21T06:52:31Z")

</div>

hexToNumber 에 보면 인풋이 hex string이므로  
'0x17’을 입력해주는게 맞습니다  
아래 'c’도 '0xc’로 정확히 입력하는게 맞습니다.

---

<div class="post-metadata">

**Author:** ![klay](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/klay/32/1277_2.png) [@klay](https://devforum.kaia.io/u/klay)\
**Post date:** [12월 21, 2021, 7:39오전 UTC](https://devforum.kaia.io/t/caver-utils-hextonumber/2867/3 "2021-12-21T07:39:42Z")

</div>

함수명이 toNumber라면 답변 주신걸 이해하겠는데,  
보통 비슷한 함수에서는 prefix인 0x 를 붙이지 않아도 hex string으로 인식합니다.

hexToNumber에 17을 넣었는데 17이 나온다니요…

아래는 마이크로소프트에서 가이드 하는 hexString 변환 예제 코드입니다.

> string hexString = “43480170”;  
> uint num = uint.Parse(hexString, System.Globalization.NumberStyles.AllowHexSpecifier);
> 
> byte floatVals = BitConverter.GetBytes(num);  
> float f = BitConverter.ToSingle(floatVals, 0);  
> Console.WriteLine(“float convert = {0}”, f);
> 
> // Output: 200.0056

hex string으로 인식을 하던지 아니면 hex string이 아니라고 에러를 출력하던지  
둘 중 하나는 하는게 이 함수를 받아들이는 사용자 측면에서 맞는 동작으로 보입니다.

---

<div class="post-metadata">

**Author:** ![kkookk](https://avatars.discourse-cdn.com/v4/letter/k/71c47a/32.png) [@kkookk](https://devforum.kaia.io/u/kkookk)\
**Post date:** [12월 21, 2021, 7:58오전 UTC](https://devforum.kaia.io/t/caver-utils-hextonumber/2867/4 "2021-12-21T07:58:20Z")

</div>

그렇겠네요 ( 참고로 저도 지나가는 클린이 입니다)  
웹3랑 caver 같이 테스트해보았는데 웹3에서는 해당부분이 업데이트 되었나봅니다.

![image](https://canada1.discourse-cdn.com/flex035/uploads/klaytn/original/2X/6/65a94c226b4a731961574b342213ce274ad5bab6.png)

Uncaught Error: Given value “17” is not a valid hex string. 라는 에러를 떨구네요  
반대로 caver-js 에서는 그대로 17값을 출력하는걸 보니 조만간 업데이트가 있지 않을까 싶네요

hex string이 아니라고 출력하는게 더 맞는 것 같습니다  
웹3 랑 caver 각각 에서의 문서 주소입니다

[https://web3js.readthedocs.io/en/v1.2.11/web3-utils.html#hextonumber](https://web3js.readthedocs.io/en/v1.2.11/web3-utils.html#hextonumber)

> **[caver.utils](https://docs.klaytn.com/bapp/sdk/caver-js/api-references/caver.utils#hextonumber)**
>
> caver-js utility APIs.

---

<div class="post-metadata">

**Author:** ![klay](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/klay/32/1277_2.png) [@klay](https://devforum.kaia.io/u/klay)\
**Post date:** [12월 21, 2021, 8:21오전 UTC](https://devforum.kaia.io/t/caver-utils-hextonumber/2867/5 "2021-12-21T08:21:22Z")

</div>

오호, 이더리움은 벌써 문제를 수정했나 보군요.

이게 자칫하면 서비스 하는 클라이언트 입장에서는 알 수 없는 큰 버그가 될 수 있어서요.

클레이튼도 빨리 수정해 주면 좋겠네요.

좋은 정보 감사합니다.

---

<div class="post-metadata">

**Author:** ![Denver](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/denver/32/557_2.png) [@Denver](https://devforum.kaia.io/u/Denver)\
**Post date:** [12월 22, 2021, 6:36오전 UTC](https://devforum.kaia.io/t/caver-utils-hextonumber/2867/6 "2021-12-22T06:36:20Z")

</div>

@klay  
안녕하세요.

caver-js에 관심을 가져주시고 Klaytn 포럼에 해당 내용을 제보해주셔서 감사드립니다 🙂

당장 빠른 패치는 어렵지만 다음 릴리즈 때 해당 부분이 Fix 될 수 있게끔 조치하도록 하겠습니다.  
불편하시겠지만 Fix 전까지는 prefix `0x` 가 붙은 채로 input이 들어갈 수 있도록 주의 부탁드립니다.

또한 [GitHub - klaytn/caver-js: Official caver-js repository](https://github.com/klaytn/caver-js) 는 오픈소스이기 때문에  
여건이 되신다면, 이슈 및 PR을 올려주시는 것도 함께 고려해보시면 너무 좋을 거 같습니다.

감사합니다.

P.S.  
@kkookk  
댓글 남겨주시고 관련 이슈에 대해 함께 논의해주셔서 감사합니다.

cc. @Jamie

---

<div class="post-metadata">

**Author:** ![klay](https://yyz1.discourse-cdn.com/flex035/user_avatar/devforum.kaia.io/klay/32/1277_2.png) [@klay](https://devforum.kaia.io/u/klay)\
**Post date:** [12월 22, 2021, 12:50오후 UTC](https://devforum.kaia.io/t/caver-utils-hextonumber/2867/7 "2021-12-22T12:50:22Z")

</div>

넵, 조만간 PR 올려보도록 하겠습니다 🙂
