如何在游戏制作者中将字符串转换为二进制表示?

时间:2017-03-23 23:55:44

标签: game-maker-language

我找到了一个将二进制转换为字符串的脚本,但是如何输入字符串并获取二进制表示?所以说我输入“P”我希望它输出01010000作为字符串。

我有这个,但它不是我想要做的 - 它将包含二进制数的字符串转换为该数字的实际值:

///string_to_binary(string)
var str = argument0;
var output = "";
for(var i = 0; i < string_length(str); i++){
if(string_char_at(str, i + 1) == "0"){
    output += "0";
}
else{
    output += "1";
}
}
return real(output);

2 个答案:

答案 0 :(得分:2)

提示:搜索GML或其他语言术语,这些问题可以多次回答。另外,请检查您的标签,因为它是IDE标签,而不是语言标签。

我自己并不熟悉GML,但快速搜索显示了这一点:

至少是半官方的方法:http://www.gmlscripts.com/script/bytes_to_bin

/// bytes_to_bin(str)
//
//  Returns a string of binary digits, 1 bit each.
//
//      str         raw bytes, 8 bits each, string
//
/// GMLscripts.com/license
{
    var str, bin, p, byte;
    str = argument0;
    bin = "";
    p = string_length(str);
    repeat (p) {
        byte = ord(string_char_at(str,p));
        repeat (8) {
            if (byte & 1) bin = "1" + bin else bin = "0" + bin;
            byte = byte >> 1;
        }
        p -= 1;
    }
    return bin;
}

GML论坛(有几个例子)https://www.reddit.com/r/gamemaker/comments/4opzhu/how_could_i_convert_a_string_to_binary/

///string_to_binary(string)
var str = argument0;
var output = "";
for(var i = 0; i < string_length(str); i++){
    if(string_char_at(str, i + 1) == "0"){
        output += "0";
    }
    else{
        output += "1";
    }
}
return real(output);


和其他语言示例:

C ++ Fastest way to Convert String to Binary?

#include <string>
#include <bitset>
#include <iostream>
using namespace std;
int main(){
  string myString = "Hello World";
  for (std::size_t i = 0; i < myString.size(); ++i)
  {
      cout << bitset<8>(myString.c_str()[i]) << endl;
  }
}

Java:Convert A String (like testing123) To Binary In Java

  String s = "foo";
  byte[] bytes = s.getBytes();
  StringBuilder binary = new StringBuilder();
  for (byte b : bytes)
  {
     int val = b;
     for (int i = 0; i < 8; i++)
     {
        binary.append((val & 128) == 0 ? 0 : 1);
        val <<= 1;
     }
     binary.append(' ');
  }
  System.out.println("'" + s + "' to binary: " + binary);

JS:How to convert text to binary code in JavaScript?

function convert() {
  var output = document.getElementById("ti2");
  var input = document.getElementById("ti1").value;
  output.value = "";
  for (var i = 0; i < input.length; i++) {
      output.value += input[i].charCodeAt(0).toString(2) + " ";
  }
}

答案 1 :(得分:0)

我一直在寻找一个简单的GML脚本,用于将十进制转换为二进制并返回数组中的位。我没有找到任何满足我需要和喜欢的东西,所以我自己动手了。简短而甜美。

第一个参数是十进制数字(字符串或十进制),第二个参数是位长。

// dec_to_bin(num, len);
// argument0, decimal string
// argument1, integer

var num = real(argument0);
var len = argument1;
var bin = array_create(len, 0);

for (var i = len - 1; i >= 0; --i) {
    bin[i] = floor(num % 2);
    num -= num / 2;
}

return bin;

用法:

dec_to_bin("48", 10);

输出:

{ { 0,0,0,0,1,1,0,0,0,0 },  }