2016-11-01 11 views
0

次のJavaコードと同等のPython変換をしたいですか?Pythonの右シフト

msg = "any text" 
int len = msg == null ? 0 : msg.length(); 
if (len > 0) { 
    byte lb[] = new byte[4]; 
    lb[3] = (byte) (len & 0xFF); 
    lb[2] = (byte) ((len >> 8) & 0xFF); 
    lb[1] = (byte) ((len >> 16) & 0xFF); 
    lb[0] = (byte) ((len >> 24) & 0xFF); 
} 

助けてください。

+3

SO無料のコード変換サービスではありません。これについて助けが必要な場合は、これをPythonでコーディングするときの試行を投稿し、何がタスクを完了するのを止めているのかを明確に記述する必要があります。 FWIWでは、Pythonでビット演算子 '&'と '' >>演算子を使うことができます。あなたが始められるためには、2番目の行を 'msg else 0ならば' len = len(msg) 'として実装することができます。 –

+0

この正確なアルゴリズムをPythonで実装しますか?それとも同等の答えを出すコードがほしいのですか? Python 3では、 'int.to_bytes'メソッドを呼び出すことでこの操作を簡単に行うことができます。 –

答えて

0
msg = "any text" 
length = 0 if msg is None else len(msg) 
if length > 0: 
    lb = [] 
    lb.append((length >> 24) & 0xFF) 
    lb.append((length >> 16) & 0xFF) 
    lb.append((length >> 8) & 0xFF) 
    lb.append((length ) & 0xFF) 

newmsg = b''.join(chr(i) for i in lb) 
+0

誰がこの回答を下落させましたか? downvotingの理由を指定します。 –

+0

今、それは有効なPythonコード@PM2Ringですか? –

+1

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)は本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。 – andreas

0
msg = "any text" 
len = len(msg) 
lb = [] 
if len > 0 : 
    lb.append(len & 0xFF) 
    lb.append((len >> 8) & 0xFF) 
    lb.append((len >> 16) & 0xFF) 
    lb.append((len >> 24) & 0xFF) 


for num in reversed(lb): 
    print (num) 
関連する問題