有没有我可以用来将浮点值转换为十六进制值并返回的函数?
我有这个代码:
Hexline - 十六进制字符串(080a00000135627c43784...等)
Date = Hexline[:16]
Prio = Hexline[16:2]
Date = "0x"+Date
DecDate = long(Date, 16)
print 'date = %s' % DecDate
print 'prio = %s' % int(Prio, 16)
Run Code Online (Sandbox Code Playgroud)
但是在第 2 步中,我得到了“int() 的无效文字,基数为 16 ''”错误。(Prio = '')
怎么了?
目的 :
首先将整数值转换为 hexstring,然后转换为 byte[]。
例子 :
Need to convert int:1024 to hexstring:400 to byte[]: 00000100 00000000
Run Code Online (Sandbox Code Playgroud)
方法:
为了从整数转换为十六进制字符串,我尝试了下面的代码
int i=1024;
string hexString = i.ToString("X");
Run Code Online (Sandbox Code Playgroud)
我得到的十六进制字符串值为“400”。然后我尝试使用下面的代码将十六进制字符串转换为字节 []
byte[] value = HexStringToByteArray(hexValue);
/* function for converting hexstring to byte array */
public byte[] HexStringToByteArray(string hex)
{
int NumberChars = hex.Length;
if(NumberChars %2==1)
throw new Exception("Hex string cannot have an odd number of digits.");
byte[] bytes = new byte[NumberChars / 2];
for (int i = 0; i < NumberChars; i += 2) …Run Code Online (Sandbox Code Playgroud) 我需要将一些小端十六进制格式的元组转换为整数格式,我该怎么做?
例:
myTuple = ['0xD4', '0x51', '0x1', '0x0']
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为integer(86484).
假设我有一个表示十六进制值的字符串s:
string s="0x80";
Run Code Online (Sandbox Code Playgroud)
我想将s的值赋给v,其中v定义为:
unsigned char v;
Run Code Online (Sandbox Code Playgroud)
这样做最简单的方法是什么?
我为什么需要它?因为在这里,布隆过滤器被表示为unsigned char的向量,其中每个char代表8位.我想访问每个char,对其执行一些计算,然后以兼容的形式将其存储回来.此外,当我打印向量的每个元素(其类型为unsigned char)时,它以十六进制形式出现,例如3a,98等.
所以我有一些Lua字节码,现在我想把它重新编译成人类可读的代码:
\27\76\117\97\81\0\1\4\8\4\8\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\2\2\4\0\0\0\5\0\0\0\65\64\0\0\28\64\0\1\30\0\128\0\2\0\0\0\4\6\0\0\0\0\0\0\0\112\114\105\110\116\0\4\9\0\0\0\0\0\0\0\72\105\32\116\104\101\114\101\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
Run Code Online (Sandbox Code Playgroud)
我怎么做到这一点?我尝试过使用LuaDec,但是我收到以下错误:
预编译块中的错误标头
如果有人能帮助我那将是非常好的.
德尔福东京 - 我有一个文本文件...(特别是CSV文件).我正在使用TextFile操作逐行读取文件...文件的前三个字节有一些我不感兴趣的标题数据.虽然我认为这将是所有文件中的情况,我想验证在我删除它之前.简而言之,我想读取该行,将前三个字节与三个十六进制值进行比较,如果匹配,则删除3个字节.
当我在十六进制编辑器中查看文件时,我明白了
EF BB BF ...
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因,我的比较都不起作用.这是一个代码片段.
var
LeadingBadBytes: String;
begin
// Open file, and read first line into variable TriggerHeader
...
LeadingBadBytes := '$EFBBBF';
if AnsiPos(LeadingBadBytes, TriggerHeader) = 1 then
delete(TriggerHeader, 1, 3);
Run Code Online (Sandbox Code Playgroud)
DELETE命令本身工作正常,但我无法使AnsiPos工作.我应该做些什么呢?
我需要在Java中打印前1000个unicode字符,问题是我不知道如何将文本和Unicode的六进制代码组合在一起.
示例:我想打印空白区,所以在println命令我插入"\ u00"并在while循环中我需要添加其他2 00,但我不能像文本一样插入它们!( "00").
我告诉你我尝试过的东西......我在互联网上找到了这个代码并且我修改了它,并且是一个小小的车,所以如果你能解决它我也会很棒啊哈哈!
public static void main(String[] args) {
char t[]="0123456789abcdef".toCharArray();
int i = 0;
while(i<1000) {
System.out.println("Char: " + t[i/16] + t[i%16] + " ==> " + "\u00" + t[i/16] + t[i++%16]);
}
}
Run Code Online (Sandbox Code Playgroud)
PS:有时随机,编译器给我这个错误:
at unicodetest.UnicodeTest.main(Char: 83 ==> 83
UnicodeTest.java:10)
Run Code Online (Sandbox Code Playgroud)
第10行是:
System.out.println("Char: " + t[i/16] + t[i%16] + " ==> " + t[i/16] + t[i++%16]);
Run Code Online (Sandbox Code Playgroud)
编辑:它应该看起来像这样:
Char: 20 ==> ' '
Char: 21 ==> '!'
Char: 22 ==> '"'
Char: 23 ==> '#' …Run Code Online (Sandbox Code Playgroud) 我想将字节数组的uint8_t十六进制值转换为char数组字符串(**相同的值不是ASCII),然后简单打印此字符串数组,如下所示:
输入:
uint8_t myarr[4]={0x11,0x12,0x33,0x1A}
Run Code Online (Sandbox Code Playgroud)
输出:
1112331A
Run Code Online (Sandbox Code Playgroud)
简单char数组字符串不是十六进制数组字符串.
我正在实现该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)做到的:使一个数字可与十六进制对应的数字相提并论。