제 질문은 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;
};
처음에는 바이트 배열을 선언합니다.
var byteArray = new Array(4)
배열 : [00000000, 00000000, 00000000, 00000000]
비트 AND
연산자&
를 사용하여 결과 값을 새 변수에 할당하면서 처음 8 비트를 "캡처"합니다.
var byte = intToConvert & 0xff;
변수에서 일어나는 일 :
intToConvert : 10101010 10101010 10101010 10101010
AND "0xff": 11111111 -------- -------- --------
결과 : 10101010
그런 다음 결과 단일 바이트를 임시 바이트 배열의 실제 인덱스에 넣습니다.
byteArray[i] = byte;
어레이 : [10101010, 00000000, 00000000, 00000000]
이제 배열에 추가 된 값을 빼고 정수 변수에서 1 바이트를 제거하면됩니다.
intToConvert = (intToConvert - byte) / 256 ;
2863311530-170 = 2863311360
2863311360/256 = 111848102863311360 => 10101010 10101010 10101010 00000000 11184810 => 10101010 10101010 10101010
이 루프를 계속하면 Integer에서 임시 바이트 배열로 바이트 단위로 전송됩니다. 따라서 우리는 하나의 정수 또는 두 개의 Character
16 진수를 나타내는 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] 삭제
몇 마디 만하겠습니다