私の質問は、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バイト)で表されるため、最初にそのような数値を「分割」して、1バイトを1つずつ計算する必要があります。
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
次に、結果の1バイトを一時バイト配列の実際のインデックスに配置します。
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
このループを続行すると、整数から一時バイト配列にバイトごとに転送されます。したがってCharacter
、16進数の1つまたは2つの整数を表す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]
コメントを追加