Java 如何将文件中所有使用的ASCII字符放入字典/数组/列表中,并为每个字符分配一个值?

Java 如何将文件中所有使用的ASCII字符放入字典/数组/列表中,并为每个字符分配一个值?,java,python,Java,Python,我基本上想读一个文件(可以是mp3文件或其他文件)。扫描文件中所有使用的ASCII字符,并将它们放入字典、数组或列表中。然后从那里给每个字符分配一个数值 例如: 假设我加载了blabla.mp3文件 (显然,这种类型的文件是经过编码的,所以它不仅仅是纯英语字符。) 这是它的内容: ╤dìúH»╓╒:φ:MQ╤╤╤╤┤我↔↔←GGGΦ⌠我←E::2E┤tti←╙╤ΦΦ⌠·:::::%Fæ╤╤:6Å⌠tSN│ëèDè╢ÄÄÄÄÄÄÄO^↔:::.ÄÄÄÄÄÄÄH■ï»ó⌐╙-↔→E┤tttttttt

我基本上想读一个文件(可以是mp3文件或其他文件)。扫描文件中所有使用的ASCII字符,并将它们放入字典、数组或列表中。然后从那里给每个字符分配一个数值

例如:

假设我加载了blabla.mp3文件 (显然,这种类型的文件是经过编码的,所以它不仅仅是纯英语字符。)

这是它的内容:

╤dìúH»╓╒:φ:MQ╤╤╤╤┤我↔↔←GGGΦ⌠我←E::2E┤tti←╙╤ΦΦ⌠·:::::%Fæ╤╤:6Å⌠tSN│ëèDè╢ÄÄÄÄÄÄÄO^↔:::.ÄÄÄÄÄÄÄH■ï»ó⌐╙-↔→E┤tttttttt}▲î╤╤dì“Ü::)ú$tmº╤╓Q╤╙·:.аааV├╡ΦPa↨/úúúúúúΦ╞îHΦ║*ÄúóΦ»DΦ·tΘ○_努克►“Dëëë)#→·:4Äïúúúúúó¿║:(  ·:ç↑PR“$RGH◄◘úúó¿ΦΦΦΦ┌&HΦ┌+⌠WºGG╤M→女朋友╘±"¿ΦñïúúúóΦò↨FæTtt╓ìú⌠ΦΦΦ⌠z:::=:::≥E╤╤╤╤╤╤╤商标↔↔▬Hèi⌠ztz:::tt

我想找出正在使用的字符,并为每个字符指定一个0-255之间的值,每个值对该字符都是唯一的

所以╤ = 0;Φ=56;ú=25等

现在我一直在搜索python和java文档,我不确定我是否知道我在搜索什么,我也不知道我是否应该担心ASCII字符、十六进制或文件的原始字节


我只需要有人给我指出正确的方向。有什么帮助吗?

每个字节都是一个从0到255的数字。包含这些数字的数组就是一个包含文件内容的数组。我完全不清楚您想用这个数组(或字典等)做什么但是,这样做很容易。

您读入的每个字节都是一个介于0和255之间的值(因此是一个字节)。有什么原因不能直接使用它吗?

我不清楚你到底想做什么。你可以创建长度为256的
字符数组。每个条目存储你想与该索引关联的字符。如果你想换一种方式,我建议使用
哈希映射。你可以对每个新字符进行处理g像这样:

Map<Character, Integer> map = new HashMap<Character, Integer>();
for (each character c in the file) {
    Integer code = map.get(c);
    if (code == null) {
        // new character
        code = map.size();
        map.put(c, code); // assign next number
    }
    // use code as the encoding for c
}
Map Map=newhashmap();
for(文件中的每个字符c){
整数代码=map.get(c);
如果(代码==null){
//新字
code=map.size();
map.put(c,code);//分配下一个数字
}
//使用代码作为c的编码
}

在Java中,这是错误的。每个字节都是一个从-128到127的数字。Java中唯一的无符号整数类型是
char
。嗯……是的。除了你可以做
字节&0xFF
进行转换之外。这会将其转换为
int
值(对于OP来说这可能很好)。它不再是
字节
。如果它是
字节
基元类型,则它的值介于-128和127之间。@TedHopp抱歉,我想到的是c,无论哪种方式,你都可以轻松地将其放大。与每个字符关联的数字来自哪里?