2016-06-28 13 views
0

私はGolangで新しく、私の問題は:Go:巨大な数値をどのように分割するのですか?

それぞれ64個の要素の2つのバイト配列を持っています。それらの名前を "A"と "B"としましょう。これらの配列のそれぞれは、符号なし整数を表します。

(A/B)の結果を表す別の64バイト配列 "R"を生成したいとします。

アイデア?

// pre-condition: A and B have 64 bytes each 
// A and B each represent an unsigned integer 
// R = (A/B) 

func divideByteArrays(A, B []byte) []byte { 
    R := make([]byte, 64) 
    // ... do something ... 
    return R 
} 

ありがとうございます!

EDIT:

それはその目標を達成するために "大きな数学を/" を使用することは可能でしょうか?

+5

[ '数学/ big'パッケージ](https://godoc.org/math/bigは)あなたが探しているものかもしれません。 –

+0

提案をいただきありがとうございますが、実際にそのパッケージを見ましたが、これらのバイト配列を手助けするものは何も見つかりませんでした。私が見てきたように、小さな数字で操作をゆっくりと行うことで、その膨大な数に到達することは可能です。 –

答えて

4

https://play.golang.org/p/T5R8fB8q60

package main 

import (
    "math/big" 
    "fmt" 
) 

func divideByteArrays(A, B []byte) []byte { 
    var AI, BI, R big.Int 
    AI.SetBytes(A) 
    BI.SetBytes(B) 
    R.Div(&AI, &BI) 
    return R.Bytes() 
} 

func main() { 
    a_array := make([]byte, 64) 
    b_array := make([]byte, 64) 

    for i := 0; i < 64; i++ { 
     a_array[i] = 4 
     b_array[i] = 2 
    } 

    fmt.Println(divideByteArrays(a_array, b_array)) 
} 
+0

あなたはあなたの天才です!私はかなりの間、この問題に悩まされています。どうもありがとうございました。 –

関連する問題