16 진 문자열을 바이트 배열로 변환

리키

제 질문은 Evernote API
의 방법을 성공적으로 사용하는 방법 getResourceByHash(...)입니다.

내가 한 일 :
메모 내용에 em-media의 16 진 해시가 있습니다.80ad525cd14de8f925487c02afc9ab21

그런 다음 다음 함수를 사용하여 16 진수 String를 바이트로 바꿉니다.

function hex2bin(hex){
    var bytes = [];
    for(var i=0; i< hex.length-1; i+=2) {
        bytes.push(parseInt(hex.substr(i, 2), 16));
    }
    return String.fromCharCode.apply(String, bytes);    
}

var bin = hex2bin("80ad525cd14de8f925487c02afc9ab21");

다음에는 다음과 같이 함수 getResourceByHash(...)변수를 적용합니다 .

noteStore.getResourceByHash(GUID, bin, true, true, true, 
    function(err,result){
        console.log(err);
        console.log(result);
    }
);

그러나 결과는 다음과 같습니다.

{identifier: 'Resources', key: 'c280c2ad525cc3914dc3a8c3b925487c02c2afc389c2ab21'}
undefined

전반적으로 나는 혼란 스럽습니다.

마빈 에밀 브락

또한 단순히 유형의 값을 Integer바이트 배열로 푸시 할 수 없습니다 . 정수는 32 비트 (4 바이트)로 표시되므로 먼저 단일 바이트를 하나씩 계산하면서 이러한 숫자를 "분할"해야합니다.

intToByteArray = function(intToConvert) {
    var byteArray = new Array(4)

    for(var i = 0; i < byteArray.length; i++) {
        var byte = intToConvert & 0xff;
        byteArray[i] = byte;
        intToConvert = (intToConvert - byte) / 256 ;
    }

    return byteArray;
};     

전후 변환 시연 (JS-Fiddle)


코드 라인 설명

  1. 처음에는 바이트 배열을 선언합니다.

    var byteArray = new Array(4)
    

    배열 : [00000000, 00000000, 00000000, 00000000]

  2. 비트 AND연산자& 를 사용하여 결과 값을 새 변수에 할당하면서 처음 8 비트를 "캡처"합니다.

    var byte = intToConvert & 0xff;
    

    변수에서 일어나는 일 :

    intToConvert : 10101010 10101010 10101010 10101010 
    AND "0xff": 11111111 -------- -------- --------
    결과 : 10101010
  3. 그런 다음 결과 단일 바이트를 임시 바이트 배열의 실제 인덱스에 넣습니다.

    byteArray[i] = byte;
    

    어레이 : [10101010, 00000000, 00000000, 00000000]

  4. 이제 배열에 추가 된 값을 빼고 정수 변수에서 1 바이트를 제거하면됩니다.

    intToConvert = (intToConvert - byte) / 256 ;
    

    2863311530-170 = 2863311360
    2863311360/256 = 11184810

    2863311360 => 10101010 10101010 10101010 00000000 
      11184810 => 10101010 10101010 10101010
    

이 루프를 계속하면 Integer에서 임시 바이트 배열로 바이트 단위로 전송됩니다. 따라서 우리는 하나의 정수 또는 두 개의 Character16 진수를 나타내는 4 개의 단일 바이트의 바이트 배열을 얻을 것 String입니다.


어떻게 변환하기 byte위해 Integer 도 여기에 설명되어 있습니다 .
따라서 업데이트 hex2bin(String)는 다음과 같아야합니다.

function hex2bin(hexString) {
    var bytes = new Array(hexString.length / 2);

    for(var i = 0; i < hexString.length-1; i+=2) {
        bytes.push(
            intToByteArray(
                parseInt(hexString.substr(i, 2), 16)
            )
        );
    }

    StringBuilder sb = new StringBuilder(bytes.length * 8);
    for(byte b : bytes) {
        sb.append(Integer.toBinaryString((b & 0xFF) + 0x100).substring(1));    
    }
    return sb.toString();
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

바이트 배열을 16 진 문자열로 변환

ASCII 16 진 문자열을 바이트 배열로 변환

16 진수 문자열을 바이트 배열로 변환

홀수 길이의 Java 문자열을 16 진 바이트 배열로 변환

16 진수 문자열을 C #에서 바이트 배열로 변환

16 진수 값에 대해 문자열을 바이트 배열로 변환

자바 : 16 진수 바이트 배열을 16 개의 고정 길이 바이너리 문자열로 변환

numpy 배열을 16 진 바이트 배열로 변환

문자열을 16 진수 배열 데이터로 변환

16 진 문자열을 바이트 []로 변환

C ++ 16 진 문자열을 바이트로 변환

이진 문자열을 16 진 문자열 JAVA로 변환

16 진수 문자열을 이진 문자열로 변환

PHP 16 진수 문자열을 바이트 배열로 변환-VB.Net을 PHP로 변환

16 진수 배열을 나타내는 문자열을 C #의 바이트 배열로 변환

자바 스크립트에서 바이트 배열을 16 진수 문자열로 변환

바이트 배열 [16 진수]을 Char 배열 또는 문자열 유형 + Arduino로 변환

Java 일반 바이트 배열을 문자열로 변환 (16 진수가 아닌 10 진수)

C #에서 바이트 배열을 16 진수로 변환

int 또는 long을 바이트 16 진 배열로 변환

16 진수 문자열을 비트 문자열로 변환

사람은 Java를 어떻게 배우나요? (바이트 배열을 16 진 문자열로 변환)

일반 텍스트가있는 문자열을 16 진 스타일의 바이트 배열로 변환?

바이트 배열을 16 진수 문자열로 또는 그 반대로 어떻게 변환합니까?

16 진 문자열을 바이트 배열로 변환하는 전 처리기 매크로

파이썬은 바이트 배열을 16 진수 배열로 변환

문자열로 변환하는 바이트 16진수 객체

Java에서 바이트 배열을 16 진수 문자열로 변환하는 방법은 무엇입니까?

바이트 배열을 16진수 문자열로 변환하는 방법은 무엇입니까?