标签: binary

python 中带符号的十六进制短值的带符号十进制

我想知道是否有任何简单快捷的方法来获取 python 中带符号的十六进制的十进制值。

我要检查十六进制代码的值,只需在终端中打开 python 并输入十六进制,它会返回十进制,如下所示:

>>>0x0024
36
>>>0xcafe
51966
Run Code Online (Sandbox Code Playgroud)

所以我想知道,有什么办法可以为签名的短十六进制做到这一点吗?例如0xfffc应返回-4

python binary hex signed

1
推荐指数
1
解决办法
3221
查看次数

将 numpy 矩阵附加到没有 numpy 标头的二进制文件

我不断收到新数据作为 numpy 矩阵,我需要将其附加到现有文件中。该文件的结构和数据类型是固定的,所以我需要 python 来帮我进行转换。

对于单个矩阵,这有效:

myArr = np.reshape(np.arange(15), (3,5))
myArr.tofile('bin_file.dat')
Run Code Online (Sandbox Code Playgroud)

但是假设我想继续向现有文件附加越来越多的数组,然后numpy.tofile将覆盖它在文件中找到的任何内容,而不是附加。

我发现我还可以继续这样做:

bfile = open('bin_file.dat', 'ab')
np.save(bfile, myArr)
bfile.close()
Run Code Online (Sandbox Code Playgroud)

它成功附加到二进制文件。但numpy.save另一方面,不存储原始二进制数据,但还保存一个标头(我假设),这使得外国软件无法读取该文件(我需要原始二进制文件float32)。

使用 读取文件的现有内容numpy.fromfile、追加数据并再次保存不是一种选择,因为文件会变得非常大,并且所有 I/O 将永远需要处理。

有没有类似append模式的东西numpy.tofile?我目前还缺少其他可能性吗?

python binary numpy

1
推荐指数
1
解决办法
1525
查看次数

如何将字符串转换为其真正的二进制表示形式(UTF-8 或当前使用的任何形式)?

我想尝试 UTF-8 和 Unicode,为此我想建立一个小型网站来帮助我更好地理解编码。

\n\n

首先,我希望能够输入一些文本,然后获取字符串的实际二进制编码。为此,我正在从 C# 或 Java 中寻找与“.GetBytes”等效的内容。我不想要已解析的字符代码!

\n\n

这是我想在 JavaScript 中重现的 C# 函数

\n\n
string ToBinary(string input)\n{\n    //this is the part I am looking for in JavaScript\n    var utf8Bytes = Encoding.UTF8.GetBytes(input);\n\n    var bytesFormatedToBin = utf8Bytes.Select(b => Convert.ToString(b, 2).PadLeft(8, \'0\'));\n    return string.Join(\' \', bytesFormatedToBin);\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这里是一些示例结果:

\n\n
    \n
  • “abc”=>“01100001 01100010 01100011”
  • \n
  • "@\xc2\xa9\xc2\xae" => "01000000 11000010 10101001 11000010 10101110"
  • \n
  • "" => "11110000 10011111 10011000 10000000 11110000 10011111\n10011000 10000100"
  • \n
\n\n

有没有办法在 JavaScript 中实现这一点?

\n\n

谢谢。\n马克

\n\n

编辑:修复了截断的示例结果。 …

javascript c# binary utf-8 node.js

1
推荐指数
1
解决办法
1128
查看次数

Go 的方式是 PutUint32 还是直接使用 >> 运算符?

有两种方法可以获得相同的 4 个字节:

package main

import (
  "encoding/binary"
  "fmt"
)

func main() {
  i := binary.LittleEndian.Uint32([]byte{1, 2, 3, 0})
  bs := make([]byte, 4)
  binary.LittleEndian.PutUint32(bs, uint32(i))
  fmt.Println(bs[0] == 1 && bs[1] == 2 && bs[2] == 3 && bs[3] == 0)

  bs = []byte{byte(i & 0x000000ff),
    byte(i >> 8 & 0x000000ff),
    byte(i >> 16 & 0x000000ff),
    byte(i >> 24)}
  fmt.Println(bs[0] == 1 && bs[1] == 2 && bs[2] == 3 && bs[3] == 0)
}
Run Code Online (Sandbox Code Playgroud)

他们都工作。但 Go 社区认为哪种方式最好呢?

binary go

1
推荐指数
1
解决办法
1766
查看次数

在 git 中创建 blob 时会发生什么?

Git 将文件存储为 blob,然后使用 SHA-1 校验和作为密钥在其他 blob 中查找每个特定 blob,类似于标识文件的文件名。

那么这个黑魔法是如何运作的呢?也就是说,如何从一个文本文件开始并以一个 blob 结束?是通过取消引用文件的内存地址创建的 blob 还是其他什么?

git binary blob

1
推荐指数
1
解决办法
72
查看次数

JavaScript(添加二进制)

这是提示:

Given two binary strings, return their sum (also a binary string).

The input strings are both non-empty and contains only characters 1 or 0.

Example 1:

Input: a = "11", b = "1"
Output: "100"
Example 2:

Input: a = "1010", b = "1011"
Output: "10101"
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

var addBinary = function(a, b) {
    var c = (Number(a) + Number(b)).toString();
    var binaryTotal = "";
    var temp = 0;
    for (var i=c.length - 1; i>=0; i--) {
        console.log(temp, 'temp')
        console.log(c[i], 'c[i]') …
Run Code Online (Sandbox Code Playgroud)

javascript binary

1
推荐指数
1
解决办法
2833
查看次数

如何在 Swift 中执行循环移位?

我正在尝试在 Swift 中执行循环移位,目前有以下代码,该代码使用包含我尝试执行循环移位的数字位的字符串。这是我到目前为止的代码,

func circularRightShift(_ input: UInt8, _ amount: UInt8) -> UInt8 {
    guard amount > 0 else { return input }
    var a = String(UInt("\(input)")!, radix: 2)
    if a.count != 8 {
        a = "".padding(toLength: 8-a.count, withPad: "0", startingAt: 0) + a
    }
    for _ in 1...amount {
        a.insert(a.last!, at: a.startIndex)
        a.removeLast()
    }
    return UInt8(a, radix: 2)!
}
Run Code Online (Sandbox Code Playgroud)

这段代码可以正常工作,但是有点慢。有没有更好的方法来实现这一点,可能不使用字符串?提前致谢。

binary swift

1
推荐指数
1
解决办法
924
查看次数

如何在 C++20 中将整数转换为二进制?

我正在尝试将 char 转换为二进制。所以首先我使用static_cast< int >(letter)然后我使用cout<<format("The binary value is {:b}",integer_value);

我在 Visual Studio 2019 中使用 C++20,所以这就是我使用格式的原因。但是,我使用了它,但它给出了错误的值。例如,我输入k并显示二进制值 0b1101011,但这是错误的,我在互联网上检查了它并且k应该等于01101011。显示了我的完整代码。

#include <iostream>
#include <format>
using namespace std;

int main()
{
cout << "Enter a letter: " << endl;
char lett{};
cin >> lett;

switch (lett)
{
case 'A':
case 'a':
case 'i':
case 'I':
case 'o':
case 'O':
case 'u':
case 'U':
cout << "You entered a vowel \n";
break;

default:
cout << …
Run Code Online (Sandbox Code Playgroud)

c++ binary visual-studio c++20

1
推荐指数
1
解决办法
424
查看次数

C++ 二进制文字

我知道C++ 中的Binary Literal是从C++14标准化的。

然而,虽然我修复了stdas c++11,但它运行良好。因为实际上,我预料到会出现错误。以下是我的代码,我预计会出现错误。

int main(){
  int a = 0b1010; // an error is expected
  std::cout << a << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

另外,我已经使用以下命令编译并执行了上述文件。

g++ -std=c++11 -Wall main.cpp -o runfile
./runfile
Run Code Online (Sandbox Code Playgroud)

到底是什么原因导致没有达到预期的结果呢?难道是我哪里做错了?

c++ binary c++14

1
推荐指数
1
解决办法
195
查看次数

如果仅使用按位和逻辑运算符将任何偶数位设置为 1,则返回 1

我目前陷入了一个需要编写的函数,该函数检查是否有偶数位设置为 1。例如,evenBit(0x1)返回 1、evenBit(0x2)返回 0 和evenBit(0xFFFFFFFF)返回 1。目前我的evenBit()函数如下所示:

unsigned int evenBit(unsigned int x) {
    unsigned int evenMask = 0x55555555;
    return x & evenMask;
}
Run Code Online (Sandbox Code Playgroud)

但这些并没有返回我期望的结果,但我不完全确定如何解决这个问题。我想用掩码隔离偶数位,我已经这样做了,但我不确定如何处理结果,使其变为 1。我只能使用按位和逻辑运算符(&、|、 !);没有 if 语句、循环、算术运算符(+、-、*、/、%)或条件运算符(==、!= 等)。

c binary bit-manipulation

1
推荐指数
1
解决办法
600
查看次数

标签 统计

binary ×10

c++ ×2

javascript ×2

python ×2

bit-manipulation ×1

blob ×1

c ×1

c# ×1

c++14 ×1

c++20 ×1

git ×1

go ×1

hex ×1

node.js ×1

numpy ×1

signed ×1

swift ×1

utf-8 ×1

visual-studio ×1