Golangでバイトストリームをバイトストリームスライスに変換する最良の方法は何ですか? 現在、golang で Java プログラムを複製しようとしていますが、Java がバイトストリームを符号付きの値として読み取るのに対し、golang はそれを符号なしの値として扱うという事実に問題があると思います。
Java で印刷すると、負の値が異なることに注意してください。ポジティブは同じです:
ジャワ:
8| -8 | -58 |-61|-56|-113|42|16|-64|2|24|-16|1
ゴーラン:
8| 248 | 198 |195|200|143|42|16|192|2|2|240|1
現在、GO での私の実装は次のようになります。
//open the file with os.open
//create new reader and unzip it
//reads from zip file and returns an array of bytes associated with it.
data, err := ioutil.ReadAll(fz)
if err != nil {
return nil, err
}
//reflect.TypeOf shows this is a []uint8
//I want this to be a []int8 (so signed).
Java では、実装はほとんど次のようになりました。
//create buffer reader
//create input stream
//create datainput stream
//use the .Read function to get the values required.
それを符号付き int にすばやく型キャストする簡単な方法がわかりませんでした (おそらく私が間違っているかもしれません)。各値を signed int に変換して、スライス全体を反復処理することもできますが、その方法はやや面倒です。また、それぞれを操作する必要があります。スライスを変換するよりクリーンな方法はありますか?