我需要一个非常简短的方法来提取十六进制数的最后4位数.所以输入0x2479c
应该抛出一个输出0x479c
.我想避免转换和重新转换为二进制.
模数除法通常适用于十进制数,在这种情况下不起作用.
0x2479c modulo 0xffff = 0x479e
Run Code Online (Sandbox Code Playgroud)
这是不正确的.我试图实现这个是c/c ++.
在下面的代码中,变量'b'保持值'133',这非常简单.变量'a'怎么样?为什么'131'?
我看到唯一的区别是'015'而不是'15'.
#include<stdio.h>
int main()
{
int a,b,c;
a=015 + 0x71 +5;
printf("%d\n",a); // prints '131'
b=15 + 0x71 +5;
printf("%d\n",b); // prints '133'
}
Run Code Online (Sandbox Code Playgroud)
有人能让我知道这里发生了什么事吗?
byte[] ba = Encoding.Default.GetBytes(input);
var hexString = BitConverter.ToString(ba);
hexString = hexString.Replace("-", "");
Console.WriteLine("Or: " + hexString + " in hexadecimal");
Run Code Online (Sandbox Code Playgroud)
所以我明白了,现在我将如何转换hexString
为base64字符串?
我尝试了这个,得到了错误:
无法从字符串转换为字节[]
如果该解决方案对其他任何人都有效,那我在做什么错呢?
编辑:
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
return System.Convert.ToBase64String(plainTextBytes);
Run Code Online (Sandbox Code Playgroud)
我尝试了这一点,但是它在第一行返回“无法将类型'byte []'隐式转换为'string'”,然后返回“参数1:无法从'string'转换为'byte []'”。
我在char指针中有一个十六进制值(例如'F3'),我想将它转换为byte,因为我希望它放入一个数组.我知道有很多解决方案,但它们不是我想要的.
提前致谢!
编辑:
好吧,也许我没有写过一切.我现在拥有的:
char aChar[5];
itoa (j, aChar, 16);
Run Code Online (Sandbox Code Playgroud)
j现在是3,我只想要它在字节中.Atoi,scanf没有帮助,那些是不同的解决方案.
我正在用C#.net开发一个应用程序.我必须做一个快速的十六进制到二进制转换.我所做的是......
rtpPTypeNum = string.Join(string.Empty, udp.Payload.ToHexadecimalString().Substring(2, 2).Select(C => Convert.ToString(Convert.ToInt32(C.ToString(), 16), 2).PadLeft(4, '0'))).Substring(1, 7);
Run Code Online (Sandbox Code Playgroud)
我已经检查了它的性能,但这对我来说还不够好.
udp.Payload.ToHexadecimalString()
返回一个十六进制数字字符串.
在这个转换中,我必须做大约9000次迭代.
你能给我一个更好的方法吗?
我正在为大学做最后的项目,我正在构建连接到蓝牙规模的应用程序,并在应用程序中显示来自规模的数据(我需要得到权重).
我构建了一个从规模获取数据的简单应用程序.我得到的值是十六进制,如果我将它们转换为十进制,它不符合我在秤上看到的实际重量.
b400b0 11 0012010f 2db43c - 69.1
b400b0 2f 0012010f 2db44b - 69.2
b400b0 19 0012010f 2db45a - 69.3
b400b0 23 0012010f 2db469 - 69.4
b400b0 46 0012010f 2db478 - 69.5
b400b0 9e 0012010f 2db487 - 69.6
b400b0 1a 0012010f 2db496 - 69.7
b400b0 1b 0012010f 2db4a5 - 69.8
b400b0 51 0012010f 2db4a5 - 69.8
b400b0 56 0112010f 2db4b4 - 69.9
b400b0 1c 0012010f 2db4c3 - 70.0
b400b0 1a 0012010f 2db4c3 - 70.0
b400b0 43 0012010f 2db4e1 - 70.2 …
Run Code Online (Sandbox Code Playgroud) 考虑以下计划:
#include <iostream>
int main()
{
std::cout<<std::ios::showbase<<123<<", "<<std::hex<<123<<", "<<std::oct<<123<<'\n';
}
Run Code Online (Sandbox Code Playgroud)
预期输出:123,0x7b,0173
获得的输出:512123,7b,173(参见现场演示:http://ideone.com/Khzj5j )
但如果我稍微修改上述程序如下:
#include <iostream>
using namespace std;
int main()
{
cout<<showbase<<123<<", "<<hex<<123<<", "<<oct<<123<<'\n';
}
Run Code Online (Sandbox Code Playgroud)
现在我得到了理想的输出.(请参阅http://ideone.com/gcuHbm上的现场演示).
为什么第一个程序输出不正确但第二个程序没有?第一个项目出了什么问题?