这是交易。我找到了一个源代码并对其进行了一些更改,以便我可以从 com6 上的接收器检索数据。我收到的数据是二进制的。我想要的是将其转换为字符串,以便我可以剪切字符串的一部分并单独解码它们。我怎样才能做到这一点?源代码在下面。
using System;
using System.IO.Ports;
using System.Threading;
public class PortChat
{
static bool _continue;
static SerialPort _serialPort;
public static void Main()
{
string name;
string message;
StringComparer stringComparer = StringComparer.OrdinalIgnoreCase;
Thread readThread = new Thread(Read);
// Create a new SerialPort object with default settings.
_serialPort = new SerialPort();
// Allow the user to set the appropriate properties.
_serialPort.PortName = SetPortName(_serialPort.PortName);
_serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate);
_serialPort.Parity = SetPortParity(_serialPort.Parity);
_serialPort.DataBits = SetPortDataBits(_serialPort.DataBits);
_serialPort.StopBits = SetPortStopBits(_serialPort.StopBits);
_serialPort.Handshake = SetPortHandshake(_serialPort.Handshake);
// Set the …Run Code Online (Sandbox Code Playgroud) python的csv编写器不再支持二进制模式吗?
直到现在我还没有写'b'模式,我得到了非常烦人的错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-2-030fb0c9dc9a> in <module>()
4 with open('test.csv', 'wb') as f:
5 w = csv.writer(f)
----> 6 w.writerows(rows)
TypeError: a bytes-like object is required, not 'str'
Run Code Online (Sandbox Code Playgroud)
码:
import csv
rows = [b'1,2,3', b'4,5,6', b'7,8,9']
with open('test.csv', 'wb') as f:
w = csv.writer(f)
w.writerows(rows)
Run Code Online (Sandbox Code Playgroud)
如果有人能够解释那个很棒的错误.我传入一个iterable,其中每个元素都是一个字节序列,但我仍然得到一个关于输入不是'bytes'而是'str'的错误.这种行为似乎出人意料
我知道如果我关闭二进制模式,上面的代码片段可以写入普通文件.如果任何人有一个建设性的解决方案或建议,我将非常感激.
我有这个代码用于获取IEEE二进制数的尾数或值.
iFloat_t floatGetVal (iFloat_t x) {
iFloat_t mantissa = (BITS == 16) ? (x & 0x03FF)
: (x & 0x007FFFFF);
debug("%s: getVal before implicit 1", getBinary(mantissa));
//mantissa = (BITS == 16) ? (mantissa | 0x04)
// : (mantissa | 0x008);
mantissa = x | 0000010000000000;
debug("%s: getVal after implicit 1", getBinary(mantissa));
mantissa = (BITS == 16) ? (mantissa & 0x07FF)
: (mantissa & 0x00FFFFFF);
if(floatGetSign(x) == 1) {
mantissa = ~mantissa + 1;
}
return mantissa;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是当我尝试从数字63.125获取值时,这是相应的输出:
DEBUG iFloat.c[31] …Run Code Online (Sandbox Code Playgroud) 我试图让Java返回浮点值的二进制表示.我们说"0.125".
至于我关注的是binary32中的0.125等于:00111110 00000000 00000000 00000000
这也是我希望Java在运行以下代码时返回的内容:
int bits = Float.floatToIntBits(0.125f);
System.out.println(bits);
Run Code Online (Sandbox Code Playgroud)
但是,此代码返回此值:1040187392
我的两个问题是:
如何让java返回请求的二进制表示?
它返回的数字是什么意思?
我正在使用PHP 7.2.12
我在PHP手册的Type Casting部分遇到了以下声明:
PHP 5.2.1中添加了(二进制)强制转换和b前缀正向支持。请注意,(二进制)强制转换与(字符串)相同,但不可依赖。
我对上述文字不完全理解。有人请向我解释清楚。
我在同一页上研究了PHP手册中给出的以下代码示例:
<?php
$binary = (binary) $string;
var_dump($binary);
$binary = b"binary string";
var_dump($binary);
?>
Run Code Online (Sandbox Code Playgroud)
输出:
Notice: Undefined variable: string in ..... on line 2
string(0) ""
string(13) "binary string"
Run Code Online (Sandbox Code Playgroud)
如果您查看上面的输出,即使将其转换为二进制后,我也会得到相同的字符串。那么,二进制转换实际执行什么转换工作?
为什么不应该依赖二进制转换?
另外,请向我说明可以执行哪种类型的二进制转换?我的意思是合法的。
在PHP手册中,没有关于这方面的任何解释或理由。
请有人指导我正确的方向来帮助我。
如果我有一个xtype int,如何获取xLSB 的值并将数字中的所有其他位设置为该LSB?
我一直在与位运算符和逻辑运算符打交道,这有点(没有双关语),我知道它们是如何工作的。
移位运算符x >> 3和x << 3左,右分别×3位的位移位,我知道我们可以使用运营商如^ |和&为瞎搞与操纵位。我在理解此特定问题的逻辑时遇到了麻烦。
编辑:我们被允许用于此的运算符是!〜&^ | + << >>
我有一个二进制掩码,在某个时刻我正在更新。在我的旧掩码中将1s变为0s是可以的,但相反的做法是不允许的。如何使用一些二进制运算来断言掩码中的0都没有变成1?
我创建了一个JavaScript程序来将字符串转换为二进制。
Input: StackOverflow
Output: 1010011 1110100 1100001 1100011 1101011
1001111 1110110 1100101 1110010 1100110
1101100 1101111 1110111
Run Code Online (Sandbox Code Playgroud)
现在,我想将该二进制文件转换回如下所示的字符串。有什么可行的方法吗?
Input: 1010011 1110100 1100001 1100011 1101011
1001111 1110110 1100101 1110010 1100110
1101100 1101111 1110111
Output StackOverflow
Run Code Online (Sandbox Code Playgroud)
谢谢
我正在实现该printf()功能。几乎所有东西都可以正常工作,但是当称为时,我遇到了一个问题ft_printf("%f", -0.0)。我的程序输出0.0而不是-0.0。我不能使用任何库。
我检查负性的条件就是“ x <0”,这不包括我的问题。我发现了区分零和负零的有希望的解决方案。
这似乎可以解决我的问题:
double a = -0.0;
printf("%d\n", (*((long *)&a) == 0x8000000000000000));
Run Code Online (Sandbox Code Playgroud)
我希望打印该程序,1但是在我的程序中,当它在输出的代码中执行时0。我有一个问题理解的部分是如何*((long *)&a)做到的:使一个数字可与十六进制对应的数字相提并论。
像这样的对象:
#include <vector>
using namespace std;
class A
{
public:
vector<int> i;
//save other variable
};
void save(const A & a)
{
//dosomething
}
int main()
{
A a;
save(a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如何将其保存到二进制文件?换句话说,如何编写保存功能?