2012-02-14 4 views
0

私は10進形式のパラメータ(符号付きと符号なし)のリストを取り込み、そこから16進文字列を生成することができる必要があるExcelシートを作成しています。しかし問題は、文字列内のパラメータはリトルエンディアンである必要があり、文字列自体はビッグエンディアンであることです。私はこれを行うにはVBAを使用していますが、私はそれにはかなり新しいですし、困難に走っています。私は文字列に追加する前に各パラメータのendianessを交換する必要があると思います。私はこのサイトとウェブを見て、imの推測が単純な問題でなければならないものに対する単純な解決策を見つけていません。誰かが何か提案があれば、それは非常に高く評価されるだろう。vbaのパラメータのendianessをスワップ

列を生成するためのこれまでの私のコードを以下に示す:

サブGenerate_String()ここ

Dim funcset As String 
Dim y As String 
x = 0 
z = 0 
funcset = "" 
'while variant column is not empty 
Do While ((Trim(Cells(2, 4 + z).Value) <> "") And (Trim(Cells(2, 4 + z).Value) <> "0")) 

    Do 
     'check if last cell in the column 
     If Trim(Cells(4 + x, 1).Value) = "VALUE" Then 
      'convert cell contents to hex 
      y = Hex(Cells(3 + x, 4 + z).Value) 

      'add the converted value to the string 
      funcset = funcset + "0x" + y 
      x = x + 1 

     Else 
      'convert cell contents to hex 
      y = Hex(Cells(3 + x, 4 + z).Value) 
      'add the converted value to the string 
      funcset = funcset + "0x" + y + " " 
      x = x + 1 

     End If 
    ' continue until end of column is reached 
    Loop While Trim(Cells(3 + x, 1).Value) <> "VALUE" 

    'write the string to corresponding cell 
    Cells(3 + x, 4 + z).Value = funcset 
    funcset = "" 
    x = 0 
    z = z + 1 

Loop 

End Subの

は、いくつかのサンプルデータは、次のとおり データが生成された文字列を有していますしかし、エンディアンスワップは行われていません。 The data has a string generated, but endianess swap has not been done

+0

あなたのコードはそのままコンパイルされません(if not if)...サンプルデータ(ソース+ターゲット出力)を表示できますか? – assylias

+2

あなたのコードに従うことができません。しかしながら。 'y = Hex(Cells(3 + x、4 + z).Value)'に続いて、 'End If'があります。これは間違いだと思う。 'funcset = funcset +" 0x "+ y"から、あなたは連結のために '+'を使う言語に慣れていると推論します。 '+'を '&'に置き換えます。私はassilliasに同意します。例のデータがなければ、誰もあなたがしようとしていることを理解できません。 –

+0

[ビッグエンディアンをリトルエンディアンに変換したり、その逆をVBAで変換したりする可能性があります](http://stackoverflow.com/questions/2666874/converting-big-endian-into-little-end-and-vice-versa) -in-vba) –

答えて

0

VBAはわかりませんが、私はそれに従うだろうアルゴリズムです。

for each parameter in parameter_list 
    for i = 1 to (number of bytes in parameter type) 
     append 2-character hex value of (parameter mod 256) to string 
     parameter = parameter/256 

VBAの構文はExcelの関数に類似している場合、私はあなたが2つの文字を使用することを強制するために、あなたのHEX()関数呼び出しの2番目のパラメータ、,2を追加することができると思います。

関連する問題