bencode對象編碼實現
承接上文,使用遞歸可以很簡單的就實現了一個bencode編碼函數
package com.norkts.torrents;
import org.junit.Assert;
import java.util.*;
/**
* bencode文件編碼
* @author norkts
* @date 2017-06-23
* @version 1.0
*/
public class Bencoder {
/**
* 將對象使用bencode格式編碼
* @param target
* @return
*/
public static String encode(Object target){
StringBuilder sb = new StringBuilder;
if(target instanceof Map){
//字典類型
sb.append("d");
for(Map.Entry
String key = entry.getKey;
Object value = entry.getValue;
sb.append(encode(key));
sb.append(encode(value));
}
sb.append("e");
}else if(target instanceof List){
//列表類型處理
sb.append("l");
for(Object item : (List
}else if(target instanceof String){
//字元串類型處理
sb.append(((String)target).length + ":" + target);
}else{
//數字處理
sb.append("i" + Integer.toString((Integer)target, 10) + "e");
}
return sb.toString;
}
public static void main(String[] argv){
Object target = new LinkedHashMap
((Map
((Map
((Map
Assert.assertEquals("d1:a1:11:bi2e1:ci-3ee", encode(target));
target = new LinkedHashMap
((Map
((Map
List
((Map
System.out.println(encode(target));
Assert.assertEquals("d4:key14:val14:key2i100e4:key3l5:item1i-100el5:item1i-100eed4:key14:val14:key2i100eeee", encode(target));
System.out.println(BencodeDecoder.decode(encode(target).getBytes));
}
}


※虛擬機是如何載入類的
※WPF:實現 ScrollViewer 滾動到指定控制項處
※ElasticSearch裡面的路由功能介紹
TAG:科技優家 |
※基於TensorFlow的變分自編碼器實現
※TensorFlow 支持 Unicode 編碼
※short數組保存unicode編碼和unicode編碼轉換成shrot數組
※Python 編碼規範(Google)
※淺談Python編碼
※Oculus大更新包含5K視頻編碼支持和Oculus Home新功能
※Python Unicode編碼混亂 :來自大洋彼岸的怨念
※Python Unicode編碼混亂:來自大洋彼岸的怨念
※Science immunology:編碼基孔肯亞病毒中和抗體的mRNA 為免疫治療帶來新策略
※【視頻編碼】Content Aware ABR技術
※python編碼最佳實踐之總結
※Python判斷網頁編碼
※思科軟體再次發現硬編碼密碼;AR/VR 開發工具 Amazon Sumerian 正式上線
※Adv.Funct.Mater.:通過多肽噴墨列印為生物礦化結構編碼細胞微圖案
※也談 Python 的中文編碼問題
※Facebook新研究:一個編碼器hold住93種語言!跨語言遷移無需修改
※Facebook 360度音頻編碼與渲染
※谷歌大腦Wasserstein自編碼器:新一代生成模型演算法
※python 字元編碼處理總結
※誰說Win平台Pr用戶不能輸出Prores編碼來著?