我想知道是否有任何简单快捷的方法来获取 python 中带符号的十六进制的十进制值。
我要检查十六进制代码的值,只需在终端中打开 python 并输入十六进制,它会返回十进制,如下所示:
>>>0x0024
36
>>>0xcafe
51966
Run Code Online (Sandbox Code Playgroud)
所以我想知道,有什么办法可以为签名的短十六进制做到这一点吗?例如0xfffc应返回-4
我不断收到新数据作为 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?我目前还缺少其他可能性吗?
我想尝试 UTF-8 和 Unicode,为此我想建立一个小型网站来帮助我更好地理解编码。
\n\n首先,我希望能够输入一些文本,然后获取字符串的实际二进制编码。为此,我正在从 C# 或 Java 中寻找与“.GetBytes”等效的内容。我不想要已解析的字符代码!
\n\n这是我想在 JavaScript 中重现的 C# 函数
\n\nstring 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}\nRun Code Online (Sandbox Code Playgroud)\n\n这里是一些示例结果:
\n\n有没有办法在 JavaScript 中实现这一点?
\n\n谢谢。\n马克
\n\n编辑:修复了截断的示例结果。 …
有两种方法可以获得相同的 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 社区认为哪种方式最好呢?
Git 将文件存储为 blob,然后使用 SHA-1 校验和作为密钥在其他 blob 中查找每个特定 blob,类似于标识文件的文件名。
那么这个黑魔法是如何运作的呢?也就是说,如何从一个文本文件开始并以一个 blob 结束?是通过取消引用文件的内存地址创建的 blob 还是其他什么?
这是提示:
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) 我正在尝试在 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)
这段代码可以正常工作,但是有点慢。有没有更好的方法来实现这一点,可能不使用字符串?提前致谢。
我正在尝试将 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 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)
到底是什么原因导致没有达到预期的结果呢?难道是我哪里做错了?
我目前陷入了一个需要编写的函数,该函数检查是否有偶数位设置为 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 语句、循环、算术运算符(+、-、*、/、%)或条件运算符(==、!= 等)。